Ubuntu 上的 Nginx 端口重定向

Ubuntu 上的 Nginx 端口重定向

我是 nginx 新手,我想将端口从给定服务器转发到另一个服务器。我的想法是,我连接到端口 46 上的服务器 xxx.xx.xx.xx,然后它会将我重定向到端口 20003 上的服务器 yyy.yyy.yyy.yy。有人能帮我吗?

答案1

不要使用nginx,除非你确实需要 HTTP 协议代理,否则请使用rinetd或其他仅转发 TCP 连接且与协议无关的东西。它诚然,仅限于 TCP,但由于您似乎正在使用 HTTP,因此这不应该成为限制因素。

rinetd被称为“互联网重定向服务器”,可以在使用包管理工具的各种发行版中找到,甚至还适用于 Windows。其主页和文档可以在这里

iptables或者,如果您有像/netfilter这样的防火墙,您可以使用 DNAT/SNAT ,但这rinetd是更简单的方法。

配置很简单,只需输入(格式bindaddress bindport connectaddress connectport):

xxx.xx.xx.xx 46 yyy.yyy.yyy.yy 20003

进入您的配置。如需更多选项和详细信息,请阅读友好的手册。


虽然我非常喜欢nginx并在各种情况下使用它,但人为地将你的问题限制为nginx“如何使用 Y 完成 X”而不是“我想要完成 Z”的典型问题。通过陈述你的目标来提问,而不是通过描述预定义的路径和预定义的工具,除非有特殊原因(你应该清楚地说明)。

答案2

    server {
      listen xxx.xx.xx.xx:46;
      location / {
        proxy_pass                              http://yyy.yyy.yyy.yy:20003;
        proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;
        proxy_set_header X-Scheme               $scheme;
        proxy_set_header Host                   $host;
        proxy_set_header Accept-Encoding        "";
        proxy_next_upstream                     off;
        proxy_read_timeout                      7200;
        proxy_connect_timeout                   7200;
        add_header X-Node-Status                $upstream_status;
        }
}

相关内容