我当前的 Nginx 安装遇到了一个奇怪的问题。背景是:
- 带有 proxmox 的专用服务器
- IPTables 配置为:允许端口 80 上的传入连接,然后使用 nat 表转发到运行 nginx 的虚拟机。
- 对于端口 53 和 DNS 服务器 (其工作位置) 有相同的行为 (另一个虚拟机)。
这很奇怪,我不知道为什么,我无法从互联网上看到该网站的索引。如果我尝试:
lynx http://127.0.0.1/index.html
从安装了 nginx 的主机,我可以看到该页面。如果我尝试使用专用服务器(托管虚拟机)的 lan ip 执行相同操作,结果相同。
检查了以下命令,一切对我来说似乎都很好......
root@web:~# netstat -tulpn | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1499/nginx
root@web:~# ps aux | grep nginx
root 1499 0.0 0.1 91188 3084 ? Ss 22:25 0:00 nginx: master process /usr/sbin/nginx
www-data 1500 0.0 0.1 91504 3676 ? S 22:25 0:00 nginx: worker process
www-data 1501 0.0 0.1 91504 3676 ? S 22:25 0:00 nginx: worker process
www-data 1502 0.0 0.1 91504 3676 ? S 22:25 0:00 nginx: worker process
www-data 1503 0.0 0.1 91504 3676 ? S 22:25 0:00 nginx: worker process
root 2165 0.0 0.1 12728 2208 pts/0 R+ 22:42 0:00 grep nginx
root@web:~# iptables -L -nv
Chain INPUT (policy ACCEPT 1228 packets, 87001 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 821 packets, 75307 bytes)
pkts bytes target prot opt in out source destination
root@web:~# iptables -t nat -L -nv
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
root@web:~# iptables -t mangle -nv -L
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
root@web:~
问题的根源可能是什么?提前致谢。
编辑:上述规则来自虚拟机本身。以下是允许主机系统使用 80 端口的输入:
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 /* Allows HTTP traffic */
还有前向规则:
0 0 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 /* Forward HTTP */ to:10.250.3.5