nginx實(shí)現(xiàn)tcp反向代理

tcp反向代理默認(rèn)不在nginx的模塊里,想要nginx實(shí)現(xiàn)反向代理tcp請(qǐng)求,需要自己編譯tcp模塊到nginx中。
步驟如下:

  1. 下載、解壓縮nginx 源碼
wget '[http://nginx.org/download/nginx-1.2.1.tar.gz](http://nginx.org/download/nginx-1.2.1.tar.gz)'
tar -zxvf nginx-1.2.1.tar.gz
  1. 下載tcp模塊源碼
 git clone https://github.com/yaoweibin/nginx_tcp_proxy_module.git
  1. 給nginx源碼打patch
cd nginx-1.2.1
patch -p1 < ../nginx_tcp_proxy_module/tcp.patch
  1. 編譯、安裝nginx
./configure --add-module=../nginx_tcp_proxy_module --prefix=/opt/nginx
make && sudo make install 
  1. 配置nginx.conf
    tcp模塊是不屬于HTTP框架內(nèi)的,所以和HTTP{}同級(jí)別,配置如下,則會(huì)監(jiān)聽8080端口的tcp連接,反向代理到2000、3000端口
tcp{
        upstream cluster {
                server localhost:2000;
                server localhost:3000;
        }
        server{
                listen 8080;
                proxy_pass cluster;
        }
}

6.測(cè)試

服務(wù)器端代碼

require 'socket'                # 獲取socket標(biāo)準(zhǔn)庫(kù)
 
server = TCPServer.open(2000)   # Socket 監(jiān)聽端口為 2000
loop {                          # 永久運(yùn)行服務(wù)
  Thread.start(server.accept) do |client|
    client.puts(Time.now.ctime) # 發(fā)送時(shí)間到客戶端
    client.close
  end
}

客戶端代碼

require 'socket'

socket = TCPSocket.open('localhost',8080)
puts socket.gets
socket.close

程序運(yùn)行后,會(huì)打印出當(dāng)前時(shí)間,表明nginx已可以反向代理tcp請(qǐng)求了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容