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技术展示给你们,感谢你们的支持

相关文章
相关标签/搜索