利用nginx的stream模組實現內網埠的轉發代理

大雄45 發表於 2021-09-26
導讀 nginx從1.9.0開始,新增加了一個stream模組,用來實現四層協議的轉發、代理或者負載均衡等。比如在內網有一個mysql服務,想暴露到公網上去使用,就可以通過nginx代理的方式通過nginx來進行內網mysql的訪問。

利用nginx的stream模組實現內網埠的轉發代理利用nginx的stream模組實現內網埠的轉發代理

實驗環境
 nginx1.12.1:192.168.1.19
mysql:   192.168.1.20:3306
1:編譯或者升級nginx至版本1.9.0以上,編譯過程中需帶上--with-stream。
 ./configure  --prefix=/opt/apps/nginx --with-stream
 make && make install
2:配置stream,定義代理192.168.1.20的3306埠對映為埠2333。
 vi /opt/apps/nginx/conf/nginx.conf
……
……
events {
    use epoll;
    worker_connections  65535;
}
#stream配置
stream {
    server {
       listen 2333; 
       proxy_connect_timeout 1s;
       proxy_timeout 3s;
       proxy_pass 192.168.1.20:3306;    
    }
}
http {
……
……
}
3:開啟nginx,驗證代理是否生效。

可以看到我們現在可以通過nginx代理的埠訪問到內網的mysql服務了。這也直接避免了mysql直接暴露到公網,增加些許的安全。當然,利用stream也可以實現後端服務的負載均衡。

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2793881/,如需轉載,請註明出處,否則將追究法律責任。