如何将端口 80 转发到同一台机器上的另一个端口?

Noh*_*sib 45 networking linux port-forwarding

如何将来自端口 80 的请求转发到同一台 Linux 机器上的另一个端口?

我曾经通过更改来做到这一点nat.conf,但是我使用的这台机器没有 NAT。什么是替代方案?

小智 52

您可以使用 iptables 完成重定向:

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
Run Code Online (Sandbox Code Playgroud)


小智 19

刚刚发现自己在这个问题中,找不到简单的方法。不想在我的机器上安装 Nginx 来做这个简单的端口转发。

Rinetd对我不起作用,我的发行版没有工作包。我去了socat。超级简单:

socat TCP-LISTEN:80,fork TCP:127.0.0.1:5000
Run Code Online (Sandbox Code Playgroud)

必须运行root才能监听端口80


Til*_*ilo 10

您应该考虑使用反向代理,例如Nginx。例如,你可以在你的nginx.conf文件中放入这样的内容:

server {
    listen         80;

    server_name    your_ip_address your_server_name

    access_log   /var/log/nginx/your_domain/access.log ;
    error_log    /var/log/nginx/your_domain/error.log info ;

    location / {
        proxy_pass  http://127.0.0.1:3000;   # pass requests to the destination
    }
}

Run Code Online (Sandbox Code Playgroud)

  • 为什么?我不一定不同意,但是您是否有充分的理由不希望这种情况在网络堆栈中发生? (3认同)