服务器和客户端在同一台机器上时,iptables端口转发没有效果?

我有一个8080端口上运行的Web服务器。我想通过端口80访问它,所以我这样做:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-port 8080 

它工作,如果我从其他机器使用访问服务器

 http://ipoftheserver/ 

但是如果我使用同一台机器访问服务器,则不起作用

 http://localhost/ 

这是为什么?

提前致谢。

我不确定你可以通过iptables做你想做的事情,本地主机不通过NAT路由。 看到这个SO问题和这个SF问题的细节。

如果服务器是Apache您可以将服务器绑定到多个端口。 有关详细信息,请参阅http://httpd.apache.org/docs/2.2/bind.html

httpd.conf

 Listen 80 Listen 8000 

-要么-

 Listen 192.0.2.1:80 Listen 127.0.0.1:80 Listen 192.0.2.1:8000 

PREROUTING链在路由之前影响收到的数据包。 本地生成的数据包从OUTPUT链开始。