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. 補充
現(xiàn)在nginx 1.9是開發(fā)版,目前穩(wěn)定版沒有stream的功能,但在下個的穩(wěn)定版發(fā)布時,這功能就會集成進來。因此推薦以后用http proxy的同學(xué)可以考慮換成tcp proxy,如果只是做簡單的代理而已,而且性能上會更優(yōu)異。
二、老版本的搭建方法
nginx tcp代理功能由nginx_tcp_proxy_module模塊提供,同時監(jiān)測后端主機狀態(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;
}
}
這會出現(xiàn)一個問題,就是tcp連接會掉線。原因在于當(dāng)服務(wù)端關(guān)閉連接的時候,客戶端不可能立刻發(fā)覺連接已經(jīng)被關(guān)閉,需要等到當(dāng)Nginx在執(zhí)行check規(guī)則時認為服務(wù)端鏈接關(guān)閉,此時nginx會關(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
相關(guān)文章
關(guān)于nginx 實現(xiàn)jira反向代理的問題
這篇文章主要介紹了關(guān)于nginx 實現(xiàn)jira反向代理的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09

