我正在尝试使我的家庭服务器可供整个网络访问。我已经在 Fedora 15 64 位 Linux 计算机上安装了 Nginx,它可以与 localhost 配合使用,但无法在线工作,也不允许网络上的其他计算机通过 IP 地址访问它。它一直返回:
无法连接
我有端口转发。我甚至尝试过不同的端口,但它们似乎都被阻止了。可能出了什么问题?我有一个 netgear 路由器。
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere anywhere reject-with icmp-host- prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host- prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
答案1
Fedora 的默认防火墙配置会阻止端口 80。解除阻止的最简单方法是使用system-config-firewall
默认 Fedora 安装中提供的工具。
要在图形环境中使用它,找到防火墙桌面应用程序菜单中的选项(通常位于行政类别)或system-config-firewall
通过终端或按ALT+运行F2。然后选中万维网 (HTTP) 80/tcp:
如果需要 HTTPS/SSL,也请选择安全 WWW (HTTPS) 443/tcp。最后,点击申请使更改生效。
要从控制台使用它,请运行system-config-firewall-tui
。按下TAB键直到Customize
突出显示,然后按Enter。按下Down Arrow直到到达WWW (HTTPD)
并按Enter选择它:
(如果您也需要 HTTPS,请不要忘记。)现在选择Close
,然后OK
保存您的新防火墙配置。
答案2
iptables -L
请将运行 nginx 的机器的输出添加到您的问题中。
正如上面的评论,听起来您的 Linux 服务器正在阻止非本地连接的端口 80。
另外,您是否已将 nginx 设置为监听所有接口,而不仅仅是 127.0.0.1?它将位于 nginx 配置文件中(类似listen 80;
或类似)。
答案3
- 验证不同的设备是否可以访问您的服务器(ping)。
- 验证不同的设备是否可以访问服务器上的另一个服务(ssh)。
- 验证您的服务器上没有本地防火墙(iptables -L)。
- 验证您的 Web 服务器是否正在监听接口 172.16.0.15 或 * (netstat -al)。
- 验证您的 Web 服务器是否允许客户端在其配置文件中进行连接。
- 从您的不同设备,查看
telnet 172.16.0.15 80
您是否发生连接超时、连接被拒绝或连接关闭(第一种情况是防火墙,第二种情况是您的 Web 服务器未监听或关闭,第三种情况是 Web 服务器配置问题)。