我有两个域名,两个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>
答案 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配置中,Listen
和NameVirtualHost
指令都提供了通配符,或者全局适用于所有网络接口。由于您使用绑定到不同配置的多个IP地址,因此您需要在配置指令中比分发的默认配置文件更具体。