使用具有自定义主机名 (apache) 的 VirtualHost 时调试 400
Debugging 400 when using VirtualHost with custom hostname (apache)
此设置在 ubuntu 14.04 上运行,直到最近更新(可能包本身的更新/更改是旧的)。
- 内部 DNS 将 "piwik.7l" 解析为 192.168.1.17 。
- 192.168.1.17 提供带有 piwik 并遵循 conf
的 apache
<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
此设置在 ubuntu 14.04 上运行,直到最近更新(可能包本身的更新/更改是旧的)。
- 内部 DNS 将 "piwik.7l" 解析为 192.168.1.17 。
- 192.168.1.17 提供带有 piwik 并遵循 conf 的 apache
<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