OpenResty代理转发UDP、TCP样例详解

前言

nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等。这完全就是抢HAproxy份额的节奏,鉴于nginx在7层负载均衡和web service上的成功,和nginx良好的框架,stream模块前景一片光明

用法

stream模块用法和http模块差不多,关键的是语法几乎一致。熟悉http模块配置语法的上手更快 
以下是一个配置了tcp负载均衡和udp(dns)负载均衡的例子, 有 server,upstream块,而且还有server, 
hash, listen, proxy_pass等指令

以下是代理TCP和UDP部分样例

功能点

一 .代理MySql数据库(TCP方式)

1.MySql:由于网络权限问题无法直接访问数据库所在的服务器,可以通过一台两边都能访问的服务器作为反向代理服务器,进行反向代理

如:原数据库地址为-》192.168.26.112:3306

现在192.168.26.160:8100代理以上数据库

stream {
   upstream rtmp {
     server 192.168.26.112:3306;
    }
    server {
        listen    8100;
        proxy_pass  rtmp;
        proxy_timeout 120s;
    }
}

备注:如果配置负责方式可以用权重等方式

server 140.143.11.169:3306 weight=10;

server 182.61.55.179:3306  weight=10;

此时项目数据库直接配置访问 192.168.26.160:8100即可

openresty日志如下:连接和转发接口如下

   
   

二 .代理22端口(TCP方式) 

业务需求:xshell连接代理服务器192.168.26.160:8105,代理目的地为192.168.26.112:22

nginx.conf配置代码如下

stream {
   upstream rtmp {
     server 192.168.26.112:22;
    }
    server {
        listen    8105;
        proxy_pass  rtmp;
        proxy_timeout 120s;
    }
}

验证:需求通过openresty代理某机器的22端口,此时xshell连接代理192.168.26.160:8105即可

代理服务的日志:可以看到转发目标地址是192.168.26.112:22

三 .代理UDP

同样openresty也支持代理UDP协议

配置如下: listen    10002 udp  端口带着udp,这和tcp方式不同之处

stream {
 
   server {
        listen    10002 udp;
        proxy_pass  192.168.26.12:10001;
        proxy_timeout 120s;
   }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十年呵护

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值