nginx之tcp負載代理


大多數人針對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技術展現給大家,感謝大家的支持


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM