nginx四層代理實現端口轉發
nginx 從1.9.0版本開始支持四層代理,四層代理時,編譯需要添加 --with-stream模塊
下面舉個栗子:
A機器:47.92.125.67 安裝了mysql,端口3306
B機器:106.53.96.205 安裝了nginx
C機器:103.45.106.55 客戶端,要訪問A機器的mysql
nginx配置如下:
```
stream {
upstream cloudsocket {
hash $remote_addr consistent;
server 47.92.125.67:3306 weight=5 max_fails=3 fail_timeout=30s;
}
server {
listen 80;#數據庫服務器監聽端口
proxy_connect_timeout 10s;
proxy_timeout 300s;#設置客戶端和代理服務之間的超時時間,如果5分鍾內沒操作將自動斷開。
proxy_pass cloudsocket;
}
```
注意:stream和http是同級的,要寫在http外邊
測試:
C機器訪問B機器80端口
```
mysql -P80 -uroot -p123456 -h106.53.96.205
```
結果:
可以登錄到A機器的mysql的3306端口