当我的Ubuntu Apache服务器(Apache 2)启动时,我收到一条警告消息,内容如下:
[warn] NameVirtualHost *:80 has no VirtualHosts
但是,Web服务器工作正常。 我的网站configuration中有什么错误可以让我发出警告?
有问题的configuration文件(位于/etc/apache2/sites-available
)的内容如下(为简洁起见,删除了详细信息)
<VirtualHost *> <Location /mysite> # Configuration details here... </Location> # Use the following for authorization. <LocationMatch "/mysite/login"> AuthType Basic AuthName "My Site" AuthUserFile /etc/sitepasswords/passwd Require valid-user </LocationMatch> </VirtualHost>
我正在使用<Location>
的事实是否是问题的一部分?
更改
<VirtualHost *>
读书
<VirtualHost *:80>
或者它的(NameVirtualHost *:80)在你的apache2 Confing文件中添加了两次。 (按默认将其添加到ports.conf文件中)
这应该清除错误。
另外:你不应该忽略这个错误。 Apache的configuration,尤其是当通过虚拟主机(例如,包括/etc/httpd/vhosts.d/*)不稳定。 这意味着你不能控制明确加载主机的顺序,因此IP的默认虚拟主机成为首先加载的虚拟主机,这可能导致意想不到的后果。
其中一个例子是IP的默认虚拟主机也将在该IP上可用,而不是其名称 。 这可能会导致信息泄漏到谷歌提到您的网站IP而不是名称,这可能会让客户感到困惑。
上面的NameVirtualHost错误可能是apache以非最佳方式加载的提示,所以你不应该忽略它。
这可能是因为你在多个地方有NameVirtualHost指令。
我不知道其他发行版,但是在Ubuntu / Debian中,Apache的configuration被分割成几个文件,所以你必须检查重复的地方(httpd.conf,apache2.conf,ports.conf,conf.d / *)。
噢,我刚刚发现了这个很好的资源,提供了更多信息: 常见的Apache错误configuration 。
在Debian / Lenny框中:在/etc/apache2/ports.conf中有一个额外的NameVirtualHost语句 – 可能是这个问题的原因(在/ etc / apache2 / sites-available / default中也有相同的语句) 。 我评论说,这个错误消失了。
你有一个NameVirtualHost没有匹配的VirtualHost条目。
这通常不是致命的,只是一个信息错误。
这是因为你的NameVirtualHost行有一个端口号( :80
),但你的VirtualHost部分没有。
AS Rune提到,在Debian系统上,NameVirtualHost出现在许多文件中 – ports.conf,conf.d / virtual.conf,可能还有你自己的conf文件int sites-available
确保它存在于一个名为NameVirtualHost *:80(我的conf.d / virtual.conf中),警告应该去。
如前所述,您还需要为每个站点提供VirtualHost方向 – 可用的格式为<VirtualHost *:80>
我有同样的问题,但我在某些时候禁用Apache的默认网站。 我input类似的东西
# a2dissite default
尝试重新启动Apache 2之后,我收到以下消息:
“[警告] NameVirtualHost *:80没有VirtualHosts”
然后,我再次启用Apache 2的“默认”站点,一切都可以正常工作,使用的命令是:
# a2ensite default
这就是所有人!