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