nginx搭建tcp代理服務(wù)器
nginx不僅可以是http代理服務(wù)器,也可以輕松搭建成tcp代理服務(wù)器。
首先我們看下最新開發(fā)版的搭建方法
1. 安裝
> wget http://nginx.org/download/nginx-1.9.0.tar.gz > tar zxvf nginx-1.9.0.tar.gz
版本要求 1.9.0+
2、配置
worker_processes auto; error_log /var/log/nginx/error.log info; stream { upstream backend { hash $remote_addr consistent; server backend1.example.com:12345 weight=5; server 127.0.0.1:12345 max_fails=3 fail_timeout=30s; server unix:/tmp/backend3; } server { listen 12345; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass backend; } server { listen [::1]:12345; proxy_pass unix:/tmp/stream.socket; } }
3. 補(bǔ)充
現(xiàn)在nginx 1.9是開發(fā)版,目前穩(wěn)定版沒有stream的功能,但在下個(gè)的穩(wěn)定版發(fā)布時(shí),這功能就會(huì)集成進(jìn)來。因此推薦以后用http proxy的同學(xué)可以考慮換成tcp proxy,如果只是做簡(jiǎn)單的代理而已,而且性能上會(huì)更優(yōu)異。
二、老版本的搭建方法
nginx tcp代理功能由nginx_tcp_proxy_module模塊提供,同時(shí)監(jiān)測(cè)后端主機(jī)狀態(tài)。該模塊包括的模塊有: ngx_tcp_module, ngx_tcp_core_module, ngx_tcp_upstream_module, ngx_tcp_proxy_module, ngx_tcp_upstream_ip_hash_module。
1. 安裝
# wget http://nginx.org/download/nginx-1.4.4.tar.gz # tar zxvf nginx-1.4.4.tar.gz # cd nginx-1.4.4 # ./configure --add-module=/path/to/nginx_tcp_proxy_module # make # make install
2. 配置
http { listen 80; location /status { check_status; } } tcp { upstream cluster_www_ttlsa_com { # simple round-robin server 127.0.0.1:1234; check interval=3000 rise=2 fall=5 timeout=1000; #check interval=3000 rise=2 fall=5 timeout=1000 type=ssl_hello; #check interval=3000 rise=2 fall=5 timeout=1000 type=http; #check_http_send "GET / HTTP/1.0\r\n\r\n"; #check_http_expect_alive http_2xx http_3xx; } server { listen 8888; proxy_pass cluster_www_ttlsa_com; } }
這會(huì)出現(xiàn)一個(gè)問題,就是tcp連接會(huì)掉線。原因在于當(dāng)服務(wù)端關(guān)閉連接的時(shí)候,客戶端不可能立刻發(fā)覺連接已經(jīng)被關(guān)閉,需要等到當(dāng)Nginx在執(zhí)行check規(guī)則時(shí)認(rèn)為服務(wù)端鏈接關(guān)閉,此時(shí)nginx會(huì)關(guān)閉與客戶端的連接。
3. 保持連接配置
http { listen 80; location /status { check_status; } } tcp { timeout 1d; proxy_read_timeout 10d; proxy_send_timeout 10d; proxy_connect_timeout 30; upstream cluster_www_ttlsa_com { # simple round-robin server 127.0.0.1:1234; check interval=3000 rise=2 fall=5 timeout=1000; #check interval=3000 rise=2 fall=5 timeout=1000 type=ssl_hello; #check interval=3000 rise=2 fall=5 timeout=1000 type=http; #check_http_send "GET / HTTP/1.0\r\n\r\n"; #check_http_expect_alive http_2xx http_3xx; } server { listen 8888; proxy_pass cluster_www_ttlsa_com; so_keepalive on; tcp_nodelay on; } }
nginx_tcp_proxy_module模塊指令具體參見: http://yaoweibin.github.io/nginx_tcp_proxy_module/README.html
- nginx tcp負(fù)載均衡的具體實(shí)現(xiàn)
- Nginx配置Tcp負(fù)載均衡的方法
- 使用Nginx實(shí)現(xiàn)端口轉(zhuǎn)發(fā)TCP代理的實(shí)現(xiàn)示例
- Nginx stream 配置代理(Nginx TCP/UDP 負(fù)載均衡)
- nginx支持tcp轉(zhuǎn)發(fā)的配置分享
- 在Nginx服務(wù)器中配置針對(duì)TCP的負(fù)載均衡的方法
- nginx基于tcp做負(fù)載均衡的方法
- Nginx 實(shí)現(xiàn) TCP/DUP流量按 IP 動(dòng)態(tài)轉(zhuǎn)發(fā)操作方法
相關(guān)文章
使用Nginx搭建流媒體服務(wù)器實(shí)現(xiàn)直播功能
這篇文章主要介紹了使用Nginx搭建流媒體服務(wù)器實(shí)現(xiàn)直播功能,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07Nginx HTTP:413 Request Entity Too Large解決方法
這篇文章主要介紹了Nginx HTTP:413 Request Entity Too Large解決方法,這個(gè)問題需要修改PHP配置以及Nginx配置才可以解決,需要的朋友可以參考下2015-07-07Nginx實(shí)現(xiàn)集群的負(fù)載均衡配置過程解析
這篇文章主要為大家詳細(xì)介紹了Nginx實(shí)現(xiàn)集群的負(fù)載均衡配置過程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02nginx實(shí)現(xiàn)IP地址透?jìng)鞯氖纠a
默認(rèn)后端服務(wù)器只能看到是前端nginx調(diào)度器訪問的本機(jī),本文主要介紹了nginx實(shí)現(xiàn)IP地址透?jìng)鞯氖纠a,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08nginx支持帶下劃線的header實(shí)現(xiàn)
如果header name中包含下劃線,則忽略掉,本文主要介紹了nginx支持帶下劃線的header實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08Nginx可視化管理工具結(jié)合cpolar實(shí)現(xiàn)遠(yuǎn)程訪問的步驟詳解
Nginx Proxy Manager 是一個(gè)開源的反向代理工具,本文將給大家介紹在Linux 安裝Nginx Proxy Manager并且結(jié)合 cpolar內(nèi)網(wǎng)穿透工具實(shí)現(xiàn)遠(yuǎn)程訪問管理界面,同等,當(dāng)我們使用Nginx Proxy Manager配置其他本地服務(wù),并且需要遠(yuǎn)程訪問,也是同樣的方式,需要的朋友可以參考下2023-09-09