【问题标题】:Nginx: Internal Port Forwarding on Linux serverNginx:Linux 服务器上的内部端口转发
【发布时间】:2018-10-14 09:30:32
【问题描述】:

我目前正在处理一项需要从端口 A 到端口 B 的端口映射的任务。我正在尝试通过使用 nginx 来实现这一点,但到目前为止还没有运气。

这是场景,我有一个服务器 A 正在侦听 123,它应该在内部重定向到 1123 端口。另一个服务器 B 正在使用 python 应用程序与服务器 A 的 123 端口通信,因为它不是 Web 请求,nginx 配置不起作用。 Python应用程序在发起通信时会考虑服务器A的IP地址和端口。

我曾尝试在 linux 服务器 A 上使用 Iptables,当我重新运行上述场景时,它工作正常。

iptables -t nat -A PREROUTING -p tcp --dport 123 -j REDIRECT --to-port 1123

您能否分享您对此问题的见解,并建议我除了 Iptables 还可以使用哪些服务?

谢谢

【问题讨论】:

    标签: python linux nginx portforwarding


    【解决方案1】:

    在我看来你的问题有点混乱。

    Nginx 不适用于您的情况,因为它不是端口转发器,而是充当 Web 代理,因此除非在端口 1123 上您没有 Web 应用程序,否则它只会失败。原因是 nginx 在 ISO/OSI 模型上工作在应用程序级别,而 iptables 工作在第 3 和第 4 级,它基本上接收到读取目标端口的数据包并重新映射它。

    如果您不想将 iptables 用作最简单的选择,那么您可以使用的程序范围仅限于在这些级别中运行的任何程序。 即使您可以做的事情比 nginx 多,我也不确定 ha-proxy 是否会起作用。

    最后一个选项,您可以尝试编写代码来完成这项工作。

    【讨论】:

    • 感谢您的意见。我们放弃了这种方法,因为它不起作用。
    猜你喜欢
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多