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


68

当我的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>问题的一部分吗?

Answers:


53

更改

<VirtualHost *>

读书

<VirtualHost *:80>

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

这应该清除错误。

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

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

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


5
您可以这样设置默认虚拟主机:<VirtualHost _default_ thehostname.com>
Amy B

51

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

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

哦,我刚刚找到了包含大量信息的丰富资源:常见的Apache错误配置


3
您提供的链接看起来像是尝试理解Apache配置文件的细微差别的绝佳资源。谢谢!
Kit Roed

4
谢谢!这是我的问题-我为NameVirtualHost创建了virtual.conf,不知道它已经在ports.conf中
rcampbell

谢谢-在ubuntu服务器默认配置中,这里存在同样的问题:ports.conf包含NameVirtualHost :80,不应在启用了sites /的配置文件中重复
DrSAR 2011年

1
就我而言,此问题是因为ubuntu NameVirtualHost *:80同时具有in ports.conf和in conf.d/virtualhosts,这似乎是Ubuntu的错误。
蓬松的

9

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



3

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


2

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

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

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


2

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

# a2dissite default

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

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

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

# a2ensite default

那是所有人!


这是最好的建议。
jini 2011年

很棒的建议,我正在运行zpanelCP,但是没有任何效果。谢谢 !:)
Eliran Efron 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.