前言
百度百科是这样写的
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
但是从Nginx从1.9.0
开始,新增加了一个stream
模块,用来实现四层协议的转发、代理或者负载均衡等。
比如在内网有一个mysql服务,想暴露到公网上去使用,就可以通过nginx代理的方式通过nginx来进行内网Mysql的访问。
也就是说Nginx本来只支持HTTP,添加stream模块后就支持TCP/UDP了。
添加stream模块
查看是否添加该模块
1 | nginx -V |
搜索是否包含--with-stream
,如果包含则已添加过此模块。
如果没有需要编译添加
1 | ./configure --prefix=/opt/apps/nginx --with-stream |
注意
--prefix=/opt/apps/nginx
是nginx的执行文件位置,根据自己的服务器的实际情况配置。
转发TCP(Mysql)配置
假如Nginx的公网IP为110.119.120.121
,Mysql所在的同一个内网的内网IP为192.168.1.20
1 | #stream配置 |
这样我们就能通过110.119.120.121:13306
访问到Mysql服务了。
注意
stream配置项和http同级。
不支持不同域名转发不同Mysql的功能。
这样做的好处
- 避免数据库服务器直接暴漏在公网
- 方便数据库秒级切换
UDP负载均衡
下面就是UDP负载均衡的示例
1 | stream { |