我正在将服务器上使用端口 80 的所有内容移至端口 9000,因此我将 apache + 它的虚拟主机配置为使用 ip xx.xx.xx.106 监听 9000,并且我将 iptables 设置为预路由,它们运行良好。
问题是我有一个在 xx.xx.xx.108:9000 上运行的 nodejs 应用程序,当我在浏览器中输入不带端口号的地址时,它不会被重定向。相反,它会转到端口 80 上的服务器默认目录。(当我直接转到地址:端口时,工作正常)
这是我的路线
➜ public_html iptables -t nat -L -v -n --line-numbers
Chain PREROUTING (policy ACCEPT 639 packets, 80831 bytes)
num pkts bytes target prot opt in out source destination
1 285 16568 REDIRECT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 9000
Chain POSTROUTING (policy ACCEPT 48 packets, 3125 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 45 packets, 2981 bytes)
num pkts bytes target prot opt in out source destination
1 3 144 REDIRECT tcp -- * * 0.0.0.0/0 127.0.0.1 tcp dpt:80 redir ports 9000
2 0 0 REDIRECT tcp -- * * 0.0.0.0/0 173.234.60.106 tcp dpt:80 redir ports 9000
3 0 0 REDIRECT tcp -- * * 0.0.0.0/0 173.234.60.108 tcp dpt:80 redir ports 9000
奇怪的是,没有任何程序监听端口 80,而默认目录中的 index.php 文件可以正确编译 PHP。这让我想知道是否有默认服务监听端口 80。