利用nginx的stream模块实现内网端口的转发代理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用nginx的stream模块实现内网端口的转发代理相关的知识,希望对你有一定的参考价值。
背景
nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等。比如在内网有一个mysql服务,想暴露到公网上去使用,就可以通过nginx代理的方式通过nginx来进行内网mysql的访问。
实验环境
nginx1.12.1 : 192.168.1.19
mysql : 192.168.1.20:3306
1:编译或者升级nginx至版本1.9.0以上,编译过程中需带上--with-stream。
# ./configure --prefix=/opt/apps/nginx --with-stream # make && make install
2:配置stream,定义代理192.168.1.20的3306端口映射为端口2333。
# vi /opt/apps/nginx/conf/nginx.conf …… …… events { use epoll; worker_connections 65535; } #stream配置 stream { server { listen 2333; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass 192.168.1.20:3306; } } http { …… …… }
3:开启nginx,验证代理是否生效。
可以看到我们现在可以通过nginx代理的端口访问到内网的mysql服务了。这也直接避免了mysql直接暴露到公网,增加些许的安全。当然,利用stream也可以实现后端服务的负载均衡。
以上是关于利用nginx的stream模块实现内网端口的转发代理的主要内容,如果未能解决你的问题,请参考以下文章
CentOS 7.9使用Nginx的stream模块实现内网端口转发
利用SSH端口转发实现远程访问内网主机远程桌面 建立SSH转发
医院内外网之间通过网闸交互,通过端口转发加nginx代理实现内网访问外网