更新后的 Apache 错误:客户端发送了没有主机名的 HTTP/1.1 请求

Unc*_*lby 3 apache error-log updates centos6

我刚刚更新了运行 Apache 2.2.15 的 CentOS 6.9 虚拟机。突然间,Apache 太“挑剔”了,无法响应浏览器。任何浏览器。错误日志如下:

client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23):
Run Code Online (Sandbox Code Playgroud)

等等。

除了更新系统之外,我没有做任何更改,因为地球上的每个安全大师都告诉我们要确保我们始终拥有最新的安全补丁。一些研究表明,该消息意味着客户端没有发送“主机”标头。好吧,如果这是原因,那么它已经有一段时间没有引起注意了。

为了确认问题实际上是在更新中引起的,我回滚了它。所以现在它像以前一样工作,即正确。或者,如果不是 100%“正确”,它至少可以工作。

仅供参考,如果有人为类似的问题阅读此内容,您可以回滚您的更新(假设您使用“yum update”来更新您的系统):

# yum history
Run Code Online (Sandbox Code Playgroud)

历史记录以相反的顺序列出,最近的排在最前面,最左边的列中有一个ID号。回滚如下:

# yum undo ID
Run Code Online (Sandbox Code Playgroud)

我的工作版本(回滚更新后)

# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Mar 22 2017 06:52:55
Run Code Online (Sandbox Code Playgroud)

我的不工作版本(更新时)

# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Aug 15 2017 19:44:58
Run Code Online (Sandbox Code Playgroud)

是的,所以在 3 月和 8 月之间,显然“主机名”标题成为强制性的。

好吧,也许“更新”碰巧“修复”了某些东西,但是说“修复”碰巧破坏了其他一切。或者至少,它使一个相当好的系统完全无法运行。

所以我对 StackOverflow 的好人的问题有两个方面。

首先,我做错了什么?我该如何解决它以正确执行?我确实想要最新的修复程序,但如果它破坏了其他所有内容,则不会。

其次,我能否请一些安全专家承认,也许每次补丁可用时都更新您的系统并不总是一个好主意?

小智 5

yum 更新时我遇到了同样的问题。您的域中是否有下划线?我不知道为什么,但这似乎产生了同样的错误

client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23):

我也不得不降级,但注意到没有下划线的 URL 工作正常。HTH