![Ubuntu Server 16.10 不允许通过开放端口 80 进行连接](https://linux22.com/image/1088980/Ubuntu%20Server%2016.10%20%E4%B8%8D%E5%85%81%E8%AE%B8%E9%80%9A%E8%BF%87%E5%BC%80%E6%94%BE%E7%AB%AF%E5%8F%A3%2080%20%E8%BF%9B%E8%A1%8C%E8%BF%9E%E6%8E%A5.png)
我正在尝试在端口 80 上运行 gulp (node.js) 服务器。我之前有一个 Nginx 服务器在这个端口上运行良好,并且能够从外部访问。从命令中可以看到curl
,服务器进程正在运行并正确地为 localhost 提供服务(我在 gulp 文件中将主机名设置为“0.0.0.0”,也尝试将其设置为“127.0.0.1”):
但是,当我从远程机器将公网 IP 输入浏览器时,什么也没有发生。同样,当我curl
从另一台机器在公网 IP 上运行 时(因此这不是格式错误的 html/php 问题或类似问题),也没有任何反应。尽管curl
从机器本身运行公网 IP 时一切正常。
以下是服务器进程初始输出的图片:
还有什么可以阻止此连接?我自己没有在系统中添加任何额外的防火墙。
iptables -L
输出以下内容:
Chain ufw-user-input (1 references)
target prot opt source destination
DROP tcp -- anywhere anywhere tcp dpt:http /* 'dapp_Nginx%20HTTP' */
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
DROP tcp -- anywhere anywhere tcp dpt:8000
DROP udp -- anywhere anywhere udp dpt:8000
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT udp -- anywhere anywhere udp dpt:http
所以我想知道
DROP tcp -- anywhere anywhere tcp dpt:http /* 'dapp_Nginx%20HTTP' */
可能是问题所在,也许它拒绝的不仅仅是 Nginx(虽然肯定应该如此?)?如果是这样,我该如何使用 iptables 删除此特定拒绝规则?如果不是,我有点不知道是什么导致了这个问题。
iptables -L
(如果有人觉得需要的话我可以提供完整的输出。)
答案1
没关系,最后是 Nginx 规则,我原以为它是特定于 Nginx 的,但是显然阻止了整个端口,即使在使用 ufw 专门打开了 80 端口之后。
像这样修复:
iptables -D ufw-user-input 1