如何在多个端口上设置反向代理(tcp & udp)

Posted

技术标签:

【中文标题】如何在多个端口上设置反向代理(tcp & udp)【英文标题】:How to setup a reverse proxy on several ports (tcp & udp) 【发布时间】:2015-12-13 16:14:01 【问题描述】:

我已经为网站设置了反向代理,现在我想用下面所述的端口代理我的游戏服务器,但我真的找不到任何地方如何执行此操作。有人有想法吗? 如果可能的话,我想在 apache 上这样做。我在 ubuntu 上运行。

RDP

TCP 端口:3389

MSSQL

TCP 端口:1143

团队发言

UDP 端口:9987 TCP 端口:9987 TCP 端口:10011 TCP 端口:30033

登录服务器

TCP 端口:15001 TCP 端口:15100

游戏服务器

TCP 端口:15221

FTP

21

【问题讨论】:

您在寻找什么:正向代理(nginx 不是为它设计的)或 TCP 反向代理(流模块)?也许您只需要端口转发? 【参考方案1】:

Apache 不是代理 TCP 连接的理想工具。 Nginx plus can do it 但它不是免费的

您需要的是像 squid 这样的代理服务器,它有很好的文档记录。

您也可以在没有额外软件的情况下执行此操作,只需按照here 的说明使用 IP 表。

iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination ip:port
iptables -t nat -A PREROUTING -p tcp --dport 1112 -j DNAT --to-destination ip:port
iptables -t nat -A PREROUTING -p tcp --dport 1113 -j DNAT --to-destination ip:port
iptables -t nat -A POSTROUTING -j MASQUERADE

【讨论】:

Stream 模块不是 Plus 独有的功能,它也有开源版本:nginx.org/en/docs/stream/ngx_stream_core_module.html 我只是想补充一点,除了这里介绍的iptables规则,你可能还需要开启IP转发。要检查是否启用了 IP 转发,请运行 sysctl net.ipv4.ip_forward,如果禁用则返回 0,如果启用则返回 1。您可以使用sudo sysctl -w net.ipv4.ip_forward=1 启用它,如果您希望它在重新启动后保持不变,您可以编辑 /etc/sysctl.conf。请参阅f***lee.org/2018/09/17/… 了解更多信息。

以上是关于如何在多个端口上设置反向代理(tcp & udp)的主要内容,如果未能解决你的问题,请参考以下文章

Service Fabric TCP 反向代理

Nginx配置——单域名反向代理多个端口

NGINX - 在不同端口上反向代理多个 API

nginx 反向代理可以访问多个 docker 容器

nginx的项目实战:nginx反向代理微服务端口

使用反向代理,实现快速配置重启 Docker 守护进程