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 上工作?
您需要为 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 表中的链,这就是上述规则所做的。