使用具有自定义主机名 (apache) 的 VirtualHost 时调试 400

Debugging 400 when using VirtualHost with custom hostname (apache)

此设置在 ubuntu 14.04 上运行,直到最近更新(可能包本身的更新/更改是旧的)。

<VirtualHost *:80>
    ServerName "piwik.7l"
    ServerAlias www.piwik.7l
</VirtualHost>

如果通过 IP 地址寻址,该设置现在可以正常工作,但如果通过其域 (piwik.7l) 浏览,则会以 400 错误请求响应。 400 页面确实包含 Apache/2.4.7 (Ubuntu) Server at piwik.7l Port 80,在将 LogLevel 设置为调试后,我在 error.log 中看到以下消息:

[Mon May 22 15:12:33.566249 2017] [core:debug] [pid 1559] vhost.c(794): [client 192.168.1.112:38587] AH02415: [strict] Invalid host name 'piwik.7l', problem near: .7l
[Mon May 22 15:12:33.566316 2017] [core:debug] [pid 1559] vhost.c(889): [client 192.168.1.112:38587] AH00550: Client sent malformed Host header: piwik.7l
[Mon May 22 15:12:33.566326 2017] [core:debug] [pid 1559] protocol.c(1356): [client 192.168.1.112:38587] AH00569: client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /

滚动友好

[strict] Invalid host name 'piwik.7l', problem near: .7l
AH00550: Client sent malformed Host header: piwik.7l
AH00569: client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /

我在 VirtualHost/ServerName/ServerAlias 块中尝试了 IP、端口和域名使用的各种组合,并禁用了所有其他 VirtualHost 定义。

对我来说,这听起来好像 Apache 会尝试以严格的方式验证域 (7l) 的“tld”部分。有什么方法可以禁用它或进一步调试它吗?

编辑 apache2ctl -S的相关部分:

VirtualHost configuration:
*:80                   piwik.7l (/etc/apache2/sites-enabled/000-default.conf:1)

编辑 2 ping piwik.7l 从网络服务器和我的机器上都可以正常解析。

感谢@savedarios 在这里回答:https://serverfault.com/questions/658537/apache-virtualhost-error-invalid-host-name/841984#841984

如果发现解决方案是对我的 apache2.conf 进行以下更改:

HttpProtocolOptions Unsafe