最近的更新导致我的 16.04 服务器不再监听端口 80

最近的更新导致我的 16.04 服务器不再监听端口 80

最近的更新导致我局域网上的服务器无法通过端口 80 访问。我能够通过 22 ssh 进入它,nmap 显示它正在监听 22、443、3306 和 10000。但是,不是 80。对各种 .conf 文件进行了大量 cat 操作,但都无法找到答案。

终于在几个小时后,这篇帖子里出现了第一条回复:弗洛里安·迪施 (Florian Diesch) 揭示了找出问题的第一步。

他建议在该机器上放置另一台服务器,如下所示:sudo python -m SimpleHTTPServer 80,结果表明 apache2 实际上没有问题,只是其中一个 conf 文件坏了。

在端口 80 可用之前,我根本无法使 systemctl status apache2.service 工作,然而在使用上面的 python 代码片段对端口 80 进行一些监听之后,我得到了以下结果:

systemctl status apache2.service
● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
       └─apache2-systemd.conf
Active: failed (Result: exit-code) since Tue 2017-06-13 20:40:43 EDT; 
39s ago
 Docs: man:systemd-sysv-generator(8)
 Process: 4411 ExecStart=/etc/init.d/apache2 start (code=exited, 
 status=1/FAILURE)

 Jun 13 20:40:43 s2 apache2[4411]:  * The apache2 configtest failed.
 Jun 13 20:40:43 s2 apache2[4411]: Output of config test was:
 Jun 13 20:40:43 s2 apache2[4411]: AH00526: Syntax error on line 5 of 
 /etc/apache2/conf-enabled/phpmyadmin.conf:
 Jun 13 20:40:43 s2 apache2[4411]: order not allowed here
 Jun 13 20:40:43 s2 apache2[4411]: Action 'configtest' failed.
 Jun 13 20:40:43 s2 apache2[4411]: The Apache error log may have more 
 information.
 .......

随后还有几行,但突出的一点是 phpmyadmin.conf 和“此处不允许排序”。

我编辑了 phpmyadmin.conf 并发现了以下内容:

    Alias /phpmyadmin /usr/share/phpmyadmin

    Order Deny, Allow
    Deny from all
    Allow from 127.0.0.1
    Allow from 192.1.0
    Allow from 192.1.1

    <Directory /usr/share/phpmyadmin>
         various configs .....
    </Directory>

我继续用 # 注释掉包含“Order”的行,保存配置文件,然后再次测试。每次错误都会再次显示,有问题的行号会加一。当我将第一个配置块之前的五行全部注释掉后,一切又恢复正常。我和儿子都不知道错误是怎么出现的,因为我们都没有编辑过这个文件。

然而,我终于记起来,那天早些时候,我曾通过 ssh 进入服务器并执行了更新/升级循环。这是这五行代码进入 phpmyadmin.conf 文件的唯一可能来源。

我必须承认,当我发现问题的根源时,我完全不知所措。它实际上是彻底终止了端口 80 的 apache2 服务。我最终意识到 apache2.conf 文件本身在加载时包含了其他文件,从而引入了问题 conf 文件。

经过 12 个小时的故障排除,但在经过大量搜索、跟踪各个洞穴中的兔子之后,终于使它工作正常。

希望其他人可以从这些启示中受益。

答案1

Order、allo 和deny 显然不允许出现在那里。它们只能与某些模块一起使用(https://httpd.apache.org/docs/2.2/howto/access.html

在您更新之前,当时版本的 apache 可能忽略或警告了该错误。新版本选择失败。当您遇到此类问题时,请始终运行 apache configtest 程序,如果错误不明显,请在 Apache 手册中查找指令。

相关内容