对于我来说,设置一个 VirtualHost 来测试新的 php webapp 非常简单,例如这个 http.conf:
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /opt/webgrind/www
ServerName webgrind
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /opt/opencart/www
ServerName opencart
</VirtualHost>
我只需要重新启动服务并访问:http://webgrind/
或http://opencart/
(不更改任何内容/etc/hosts
)
但是服务器(CentOS 6)发生了一些变化,现在状态error.log
为:
[error] avahi_entry_group_add_service_strlst("opencart") failed: Invalid host name
[error] avahi_entry_group_add_service_strlst("webgrind") failed: Invalid host name
访问时http://webgrind/
出现页面离线错误。有什么想法吗?
服务器版本:Apache/2.2.15 (Unix) 服务器建立时间:2011 年 12 月 8 日 18:10:49
答案1
由于这个问题是搜索“AH02415:[strict] 无效主机名”时出现的第一个问题,因此我将添加一个答案来记录我今天浪费的时间,因为我的开发机器中的大多数虚拟主机都停止工作了(例如 shop_one.web)。
我已将 Apache 更新至版本 2.4.16-18.1,显然HttpProtocolOptions
现在默认为Strict
,因此拒绝了其中包含“_”(下划线)的本地主机名(可能是 OP 的主机名)。
我知道它们不是正确的主机名,但对于本地/个人使用不会伤害任何人,所以我添加了以下行:
HttpProtocolOptions Unsafe
修改为 default-server.conf,一切又恢复如初。另请参阅:
https://httpd.apache.org/security/vulnerabilities_24.html
https://unix.stackexchange.com/questions/340013/why-am-i-getting-400-bad-request/341306
答案2
在 apache 中配置虚拟主机并不会让服务器上的名称解析服务知道它,因此您必须更新 /etc/hosts,或者执行以下操作:
curl -H 'Host: webgrind' 127.0.0.1
覆盖默认行为。