Apache Web 服务器无法公开访问

Apache Web 服务器无法公开访问

我有一个 Apache (2.4.10) 网络服务器,运行在装有 Debian(Jessie,8)的桌面上。

桌面具有静态本地 IP 地址 (192.168.xx),我的 WAN(公共)IP 地址也已由我的 ISP 固定 (82.xxx)。已添加端口 80 到此桌面的端口转发。

我可以从 LAN 毫无问题地访问网页,但无法使用 WAN 地址访问,无论是在家里还是在外面:我从 Chrome 收到“网页不可用 - ERR_CONNECTION_REFUSED”。请注意,我可以使用 WAN 地址(在另一个端口上)打开我的路由器。

网页本身只不过是带有 Hello World 的“index.html”。

我尝试关闭 iptables 防火墙,但没有成功。我尝试了 80 以外的其他端口,但没有成功。我通过 ISP 拨打过电话,发现 80 端口没有被屏蔽。我已经在 Google 上搜索了很久。有人能给出一些关于如何让网站可访问的建议吗?

答案1

我解决了!

感谢 Moonpoint,我意识到问题出在端口转发上。所以我又看了一眼,发现对于端口 80 规则,“WAN 接口”设置为“ADSL”(默认)。我不知道这是什么意思,所以我一直没有改变它。我尝试了不同的选项,并将其设置为“ETHWAN”,解决了这个问题。我现在可以公开访问网页,并且我添加了 no-ip DDNS,它也可以正常工作。

编辑:现在我了解到 ETHWAN WAN 接口只是我的 ISP 添加到路由器的接口,是玻璃光纤连接的接口。

答案2

当您说您尝试关闭 iptables 防火墙,但没有成功时,您是指您禁用了 iptables 防火墙,但仍然无法从外部 IP 地址连接到 Web 服务器,还是您无法禁用基于主机的 iptables 防火墙?检查您网站的 Apache 访问和错误日​​志,看看是否有任何从外部 IP 地址访问系统的尝试记录在这些文件中。检查您的 Apache/etc/httpd/conf/httpd.conf文件。文件中的任何地方是否有类似于以下内容的部分:

<Directory /home/www/example>
      Order Deny,Allow
      Deny from all
      Allow from 192.168 127.0.0.1
 </Directory>

在上面的例子中,除了本地主机地址 127.0.0.1 和同一 LAN 上的系统(即 192.168.xxx.xxx)是不允许的。如果您想让服务器可供全世界访问,则“拒绝所有人”是不合适的。

您可以将问题隔离到运行 Apache Web 服务器的 Debian 系统或设置端口转发的路由器(前提是没有中间的网络设备),方法是使用tcpdump命令。tcpdump -i any port 80以 root 身份发出该命令。这将导致 tcpdump 仅在任何接口上查找到端口 80 的连接,而忽略其他流量。然后尝试从外部地址连接到 Web 服务器。如果 tcpdump 显示到端口 80 的流量到达 Linux 系统,则端口转发工作正常。如果没有,则可能是端口转发存在问题,因此请仔细检查您是否将端口 80 转发到 Web 服务器的正确 IP 地址。

相关内容