it-swarm.cn

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

当我的Ubuntu Apache服务器(Apache 2)启动时,我收到一条警告消息,内容为:

[warn] NameVirtualHost *:80 has no VirtualHosts

但是,Web服务器运行正常。我的网站配置可能有什么问题,使其发出此警告?

有问题的配置文件(位于/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>是问题的一部分吗?

68
Kit Roed

更改

<VirtualHost *>

读书

<VirtualHost *:80>

或其(NameVirtualHost *:80)在Apache2 Confing文件中添加了两次。 (默认情况下将其添加到ports.conf文件中)

这应该清除错误。

Aside:您不应忽略此错误。 Apache的配置,尤其是在遍历虚拟主机(例如Include /etc/httpd/vhosts.d/*)时,不稳定。这意味着您无法控制主机的显式加载顺序,因此IP的默认虚拟主机将成为首先加载的主机,这可能会导致意想不到的后果。

一个示例是IP的默认虚拟主机也将在该IP上可用,而不是其name。这可能会导致泄漏到Google的信息是指您网站的IP而非名称,这可能会使客户感到困惑。

上面的NameVirtualHost错误可能表明Apache以非最佳方式加载了东西,因此您不应忽略它。

53
Dave Cheney

那可能是因为您在多个地方都具有NameVirtualHost指令。

我不了解其他发行版,但是在Ubuntu/Debian中,Apache的配置分为几个文件,因此您必须检查重复的位置(httpd.conf,Apache2.conf,ports.conf,conf.d/*)。

哦,我刚刚找到了包含更多信息的强大资源: 常见的Apache错误配置

51
Ivan

在Debian/Lenny框中:/etc/Apache2/ports.conf中有一个附加的NameVirtualHost语句-可能是导致此问题的原因(/ etc/Apache2/sites-available/default中也存在相同的语句) 。我评论了该声明,并消除了错误。

9
Rune

您有一个名称虚拟主机,但没有匹配的虚拟主机条目。

这通常不是致命的,只是信息错误。

3
Dominic Eidson

这是因为您的NameVirtualHost行上有一个端口号(:80),但您的VirtualHost部分却没有。

3
derobert

正如Rune提到的那样,在Debian系统上,NameVirtualHost出现在许多文件中-ports.conf,conf.d/virtual.conf以及可能在站点中包含您自己的conf文件-

确保它以NameVirtualHost *:80的形式存在于一个位置(我的位置在conf.d/virtual.conf中),并且应该发出警告。

如前所述,您还需要使每个可用站点的VirtualHost方向具有此格式<VirtualHost *:80>

2
Mo01

我有同样的问题,但是稍后我禁用了Apache的默认站点。我输入类似

# a2dissite default

在尝试重新启动Apache 2之后,收到以下消息:

“ [警告] NameVirtualHost *:80没有虚拟主机”

然后,我再次启用Apache 2的“默认”站点,并且一切再次正常运行,所使用的命令是:

# a2ensite default

那是所有人!

2
Tiago