nginx之tcp負載代理

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

相關文章
相關標籤/搜索