我有一个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