首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

聊聊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技术展现给大家,感谢大家的支持

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180307G0F4HL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券