如需VPS代购、PHP开发、服务器运维等服务,请联系博主QQ:337003006

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,省时、省力,直接执行下面的命令即可。#执行下面的命令,根据提示完成安装

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使其生效,同时注意防火墙/安全组放行对应的端口。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相关文章

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐