使用Nginx进行TCP/UDP端口转发 您所在的位置:网站首页 tcp端口转发原理图 使用Nginx进行TCP/UDP端口转发

使用Nginx进行TCP/UDP端口转发

2024-05-21 02:11| 来源: 网络整理| 查看: 265

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。在1.9.13版本后,Nginx已经支持端口转发。之前分享过《Linux安装rinetd实现TCP端口转发》,rinetd配置简单,使用方便,但遗憾的是不支持UDP转发。如果需要同时支持TCP/UDP端口转发可以使用Nginx

安装Nginx

可以自行去官方http://nginx.org/下载最新版本Nginx编译安装,注意版本一定要大于1.9.1,编译的时候需要--with-stream这个模块支持。

编译方法这里就不介绍了,这篇文章直接使用xiaoz写好的一键脚本安装Nginx,省时、省力,直接执行下面的命令即可。

代码语言:javascript复制#执行下面的命令,根据提示完成安装 wget https://raw.githubusercontent.com/helloxz/nginx-cdn/master/nginx.sh && bash nginx.sh #安装完成后执行下面的命令让环境变量生效 source /etc/profile #执行下面的命令查看nginx信息 nginx -V端口转发

在nginx.conf添加如下配置,并使用nginx -s reload重载nginx使其生效,同时注意防火墙/安全组放行对应的端口。

代码语言:javascript复制stream { #将12345端口转发到192.168.1.23的3306端口 server { listen 12345; proxy_connect_timeout 5s; proxy_timeout 20s; proxy_pass 192.168.1.23:3306; } #将udp 53端口转发到192.168.1.23 53端口 server { listen 53 udp reuseport; proxy_timeout 20s; proxy_pass 192.168.1.23:53; } #ipv4转发到ipv6 server { listen 9135; proxy_connect_timeout 10s; proxy_timeout 30s; proxy_pass [2607:fcd0:107:3cc::1]:9135; } }listen:后面填写源端口(也就是当前服务器端口),默认协议为TCP,可以指定为UDP协议proxy_connect_timeout:连接超时时间proxy_timeout:超时时间proxy_pass:填写转发目标的IP及端口号

注意:nginx可以将IPV4的数据包转发到IPV6,IPV6的IP需要使用[]括起来。

总结

目前能实现端口转发的工具大致有:rinetd、SSH、iptables、nginx、haproxy,其中rinetd配置最为简单,但不支持UDP转发,并且该软件已经好几年未更新,如果您服务器上已经安装了nginx,不妨用nginx做端口转发。

此文部分内容参考了:

使用Nginx转发TCP/UDPModule ngx_stream_core_module

其它nginx相关文章

CentOS一键安装Nginx脚本智能解析 + Nginx反向代理,自建CDN加速节点Nginx自建CDN与ngx_cache_purge清除缓存


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有