在PREROUTING IP转发时,不能从同一台服务器上进行curl

我有一个Ubuntu web服务器,使用iptables PREROUTING将端口80转发到8000

因此,Web进程在端口8000上进行侦听。 现在我想从一台服务器上运行一个curl到一个运行在其上的web应用程序。 但是这个问题连接拒绝

 $ curl http://my.webite.com/on/same/server curl: (7) Failed connect to my.webite.com:80; Connection refused 

curl 8000端口工作(但它必须工作在端口80)。

我还确保该Web服务器在所有接口上进行侦听(不仅在物理接口上):

 $ netstat -ntl | grep LISTEN ... tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN ... 

我的应用程序域( my.webite.com )也parsing为物理接口IP。

为什么我的连接被拒绝

PREROUTING链不适用于本地(环回)stream量。 您需要在OUTPUT链中使用redirect规则才能在本地系统上运行。

例如:

 iptables -t nat -A OUTPUT -i lo -p tcp --dport 80 -j REDIRECT --to-port 8000