利用nginx的stream模塊實現內網端口的轉發代理

背景

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


實驗環境

       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,驗證代理是否生效。

image.png

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章