Apache 2启动警告:NameVirtualHost *:80没有VirtualHosts

当我的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 

这就是所有人!