当我的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>的事实是否会成为问题的一部分?

#1 楼

更改

<VirtualHost *>


读取

<VirtualHost *:80>


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

这应清除错误。

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

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

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

评论


您可以这样设置默认虚拟主机:

–艾米B
2010-10-10 12:49

#2 楼

那可能是因为您在多个地方都使用了NameVirtualHost指令。

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

哦,我刚刚找到了包含大量信息的出色资源:通用Apache配置错误。

评论


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

– Kit Roed
09年4月30日在18:35

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

–rcampbell
09-10-23在14:13

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

– DrSAR
2011-04-30 23:22



就我而言,此问题是因为ubuntu在ports.conf和conf.d / virtualhosts中都具有NameVirtualHost *:80,这似乎是Ubuntu的错误。

–蓬松
2012年7月30日,下午3:10

#3 楼

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

#4 楼

您有一个没有匹配VirtualHost条目的NameVirtualHost。

这通常不是致命的,只是一个提示性错误。

#5 楼

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

#6 楼

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

确保它在一个地方NameVirtualHost *:80(我的文件位于conf.d / virtual.conf中),并且应该发出警告。

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

#7 楼

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

# a2dissite default


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


“ [警告] NameVirtualHost *:80没有VirtualHosts“


然后我再次启用Apache 2的'default'站点,并且一切正常,使用的命令是:

# a2ensite default


这就是所有人!

评论


这是最好的建议。

– Jini
2011年8月26日下午4:58

很棒的建议,我正在运行zpanelCP,但是没有任何效果。谢谢 ! :)

– Eliran Efron
15年8月29日在8:47