在过去的 8 个小时里,我一直在为这个问题苦苦思索,但我无论如何也找不到问题所在。
我在安装了 apache2 的机器上安装了全新的 Ubuntu 17.10。当我尝试连接到本地主机上的服务器时,我像往常一样获得了 Ubuntu 测试页面。但是当我尝试从本地主机以外的任何地方连接时,我什么也得不到。无论我使用什么浏览器,都只是显示连接已超时。
我尝试 ping 服务器,ping 成功。我网络上的其他每台机器都可以在端口 80 上接收流量,因此排除了路由器的问题。UFW 处于非活动状态,所以我看不出它怎么会造成干扰。我甚至尝试在同一台机器上切换到不同的操作系统,切换操作系统时它可以工作,但它无法与 17.10 配合使用。
我现在已经束手无策了,不知道下一步该怎么办。
如能得到任何帮助我们将非常感激,提前谢谢!
答案1
网络堆栈的常规故障排除如下:
首先检查您的服务是否正在运行并监听网络套接字(接口),即 ipaddress 和端口号。通过运行以下命令:
netstat -lanp | grep apache2
记下上面命令中的 IP 地址和端口号。在我的例子中
tcp6 0 0 :::80 :::* LISTEN 12253/apache2 tcp6 0 0 :::443 :::* LISTEN 12253/apache2
尝试从另一台机器远程登录到你的套接字
telnet ipaddress_ofyour_apache_host 80
你应该得到
Trying ipaddress_ofyour_apache_host.. Connected to ipaddress_ofyour_apache_host
如果你能连接上,这意味着在操作系统网络层面一切正常,没有防火墙阻止或其他问题
如果你仍然没有从 apache 获得欢迎页面,请继续检查 apparmor,并暂时禁用它
sudo systemctl stop apparmor.service sudo update-rc.d -f apparmor remove
如果仍然没有看到页面,请通过 Web 浏览器再次检查,然后检查 apache2 access.log
答案2
好吧,问题已经解决了,但不幸的是我无法解释具体原因。我在路由器中对服务器进行了静态映射,我猜服务器不喜欢它。我切换了服务器的 IP 地址,它似乎运行正常。