端口 80 重定向不适用于本地主机

gws*_*gws 4 linux python web-server ubuntu-12.04

我想使用以下命令在我的 ubuntu linode 上运行一个简单的 python 网络服务器(它只是将当前目录放在指定的端口上)

python -m SimpleHTTPServer 8080
Run Code Online (Sandbox Code Playgroud)

我使用端口 8080 以避免使用 sudo 在端口 80 上运行

为了使其可访问,我使用以下命令将端口 80 重定向到端口 8080:

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

现在,任何计算机都可以访问我的网站 giuliopizzini.com,除了 localhost 出现套接字错误,连接被拒绝。如果我将 localhost 指向 giuliopizzini.com:8080 它工作正常但重定向失败。

我启用了防火墙,但如果我用

sudo iptables -F
Run Code Online (Sandbox Code Playgroud)

行为完全相同,所以这在这里似乎不起作用。

如何使重定向也能在 localhost 上工作?

Kha*_*led 5

您需要为 localhost 重定向添加另一个规则才能工作:

sudo iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-port 8080
Run Code Online (Sandbox Code Playgroud)

您需要包含用于连接的目标 IP,例如 localhost 或任何接口 IP。

本地产生的流量不会影响PREROUTING链条。它击中了OUTPUTnat 表中的链,这就是上述规则所做的。