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 [email protected] -p80 "uptime" 类似这样的方式去连接执行了(代码中也是这样的原理);基于这样的案例,我们也可以实现类似外网连接MySQL的tcp代理,我就不过多阐述了,原理都是一样的。

    5、在这里再唠叨一句,就是跟大家道个歉,2017年由于工作的原因,没能更新Python和Linux的文章,2018年,我会把我遇到的各种问题以及从最基础的Python技术展现给大家,感谢大家的支持

猜你喜欢

转载自www.cnblogs.com/madq-py/p/9106116.html