NameVirtualHost *:80没有VirtualHosts

时间:2011-08-23 18:16:44

标签: apache apache2 ip ubuntu-10.04

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

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

domain1的VirtualHost文件:

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>

domain2的VirtualHost文件:

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>

2 个答案:

答案 0 :(得分:41)

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

# NameVirtualHost *:80
我只注意到该行,没有其他更改,也没有更多

“NameVirtualHost *:80没有VirtualHosts”

答案 1 :(得分:29)

在您的配置中的某个地方,可能在Apache默认配置文件中(我认为Ubuntu中的/etc/apache2/httpd.conf?有人可以在评论中纠正我),是一行如下:

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地址,因此您需要在配置指令中比分发的默认配置文件更具体。