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

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

答案1

改变

<VirtualHost *>

读书

<VirtualHost *:80>

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

这应该可以清除错误。

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

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

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

答案2

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

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

哦,我刚刚发现了这个很棒的资源,里面有更多信息:常见的 Apache 配置错误

答案3

在 Debian/Lenny 框中:在 /etc/apache2/ports.conf 中有一个额外的 NameVirtualHost 语句 - 这可能是导致此问题的原因(在 /etc/apache2/sites-available/default 中也有相同的语句)。我注释了该语句,错误消失了。

答案4

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

相关内容