場景:
訪問UAT環境,只能使用客戶電腦訪問,太難用了,於是就需要在自己電腦上跑代碼,通過客戶電腦中轉來訪問uat環境的數據庫。
選用nginx進行轉發。配置如下:
stream {
upstream cloudsocket {
hash $remote_addr consistent;
server 192.168.182.155:3306 weight=5 max_fails=3 fail_timeout=30s;
}
server {
listen 3306;#數據庫服務器監聽端口
proxy_connect_timeout 10s;
proxy_timeout 300s;#設置客戶端和代理服務之間的超時時間,如果5分鍾內沒操作將自動斷開。
proxy_pass cloudsocket;
}
}
重啟。
訪問nginx所在機器的ip和配置的3306端口,輸入賬號密碼,就可以轉發mysql連接了。
注意 stream和http是同級別的,不要放入http里面。
原理,查了一頓,沒整明白,以后有時間在研究。
只有一點點:
nginx從1.9.0開始,新增加了一個stream模塊,用來實現四層協議的轉發、代理或者負載均衡等。比如在內網有一個mysql服務,想暴露到公網上去使用,就可以通過nginx代理的方式通過nginx來進行內網mysql的訪問。