大多數人針對nginx的負載均衡代理都是停留在HTTP代理那一塊,我也一樣;然而最近遇到了一個小問題,下面簡單的敘述一下:
1、開發那邊使用java代碼進行ssh連接Linux服務器,然后執行bash命令去完成參數值的獲取;前提是要求是實現nginx負載,這。。。。有點意思啊,以前沒遇到過這么奇葩的問題,不過兵來將擋水來土掩,咱還是要解決不是,所以就想到了nginx的負載代理,但是感覺HTTP明顯不行啊(測試也是不行的,雖然前面加了ssh內部轉發),那就只有tcp代理去實現了
2、如果你的nginx版本是1.9以后的版本,那么nginx的tcp代理,是需要一個叫ngx_stream_core_module的模塊,源碼編譯nginx的時候只需要加上--with-stream,這個模塊就會自動安裝了,so easy
3、下一步就是配置nginx文件了,我們知道nginx有http{ server { } }結構,跟http同級加上stream{ upstream{} server{} }這樣的結構就可以,下面是我寫的測試案例:
stream {
upstream backend {
# hash $remote_addr consistent;
server 10.0.10.181:22;
server 10.0.10.182:22;
}
server {
listen 80;
# proxy_connect_timeout 1s;
# proxy_timeout 3s;
proxy_pass backend;
}
}
4、這樣就可以使用 ssh root@10.0.10.133 -p80 "uptime" 類似這樣的方式去連接執行了(代碼中也是這樣的原理);基於這樣的案例,我們也可以實現類似外網連接MySQL的tcp代理,我就不過多闡述了,原理都是一樣的。
5、在這里再嘮叨一句,就是跟大家道個歉,2017年由於工作的原因,沒能更新Python和Linux的文章,2018年,我會把我遇到的各種問題以及從最基礎的Python技術展現給大家,感謝大家的支持
