NameVirtualHost *:80 没有 VirtualHosts

Posted

技术标签:

【中文标题】NameVirtualHost *:80 没有 VirtualHosts【英文标题】:NameVirtualHost *:80 has no VirtualHosts 【发布时间】:2011-11-02 04:47:28 【问题描述】:

我有两个域名、两个 ssl 证书和两个 IP 地址。我正在尝试为他们配置我的 apache 虚拟主机文件。

首先,我注释掉端口 80 和 443 的所有“NameVirtualHost”和“Listen”实例。然后我对我的虚拟主机文件执行以下操作。

域 1 的虚拟主机文件:

NameVirtualHost 1.1.1.1:80
Listen 1.1.1.1:80
Listen 1.1.1.1:443
<VirtualHost 1.1.1.1:80>
    ServerName domain1.com
    ...
</VirtualHost>
<VirtualHost 1.1.1.1:443>
    ...
</VirtualHost>

域 2 的虚拟主机文件:

NameVirtualHost 2.2.2.2:80
Listen 2.2.2.2:80
Listen 2.2.2.2:443
<VirtualHost 2.2.2.2:80>
    ServerName domain2.com
    ...
</VirtualHost>
<VirtualHost 2.2.2.2:443>
    ...
</VirtualHost>

【问题讨论】:

NameVirtualHost 已被弃用,不再需要。 【参考方案1】:

在我拥有 Ubuntu 服务器的 2 个月里,我忽略了同样的错误。我发现这篇文章很好地解决了这个错误。谢谢Michael!。 和Jay 一样,我在 /etc/apache2/ports.conf 找到了罪魁祸首。我简单地尝试了这个:

# NameVirtualHost *:80
我只注释掉了那条线,没有其他变化,没有更多

“NameVirtualHost *:80 没有 VirtualHosts”

【讨论】:

【参考方案2】:

在您的配置中,可能在 Apache 默认配置文件中(我认为在 Ubuntu 中是 /etc/apache2/httpd.conf?有人可以在 cmets 中纠正我),是这样一行:

NameVirtualHost *:80

# Also
Listen 80
Listen 443

将它们注释掉,并在您的 VirtualHost 配置文件中添加:

Listen 111.111.111.111:80
Listen 222.222.222.222:80
# If also using SSL
Listen 111.111.111.111:443
Listen 222.222.222.222:443

NameVirtualHost 111.111.111.111:80
NameVirtualHost 222.222.222.222:80

在许多默认的 Apache 配置中,ListenNameVirtualHost 指令与通配符一起提供,或全局应用于所有网络接口。由于您使用绑定到不同配置的多个 IP 地址,因此您的配置指令需要比发行版的默认配置文件更具体。

【讨论】:

/etc/apache2/httpd.conf 为空。 /etc/apache2/httpd.conf 没有“NameVirtualHost”或“Listen”。还在寻找。 @Jay 试试grep -r Listen /etc/apache2grep -r NameVirtualHost /etc/apache2 确认理解...注释掉“NameVirtualHost”行和“Listen”行。我现在将根据我对如何修改虚拟主机文件的理解来更新原始帖子。谢谢。 @Jay 是的,正确。注释掉原来的指令并添加你的新指令 @Jay 如果没有更多的Listen 指令,222 IP 的端口 80 上可能已经有其他东西。

以上是关于NameVirtualHost *:80 没有 VirtualHosts的主要内容,如果未能解决你的问题,请参考以下文章

没有 www 的虚拟主机 2 重定向到虚拟主机 1

apache 虚拟目录配置及详解

C#没有无缘无故地打破循环[关闭]

配置apache虚拟主机,实现在一台服务器上运行多个网站

apache代理weblogic集群办法

apache基础