我已经看到了许多关于托pipe多个虚拟主机的类似问题 ,每个IP有一个,但是找不到一个关于多个虚拟主机每个IP的问题。
简而言之,我有一台需要托pipe多个SSL证书的Apache2服务器。 我有两个单独的IP地址。 我在IP(a)上有三个域,一个在IP(b)上有多个子域,如下所示:
IP(a) - SSL(a) - https:://domain1 - domain2 - domain3 IP(b) - SSL(b) - https://sub1.domain4 - https://sub2.domain4 - https://sub3.domain4
正如我最近添加IP(b) ,我的第一步是将域4过渡到该IP。 在sub1 , sub2 , sub3.domain条目的vhost conf文件中,我将<VirtualHost *:80>切换到<VirtualHost IP(b):80> 。 重新启动Apache,我得到以下错误:
[警告] VirtualHost 173.230.156.48:80与VirtualHost 173.230.156.48:80重叠,第一个优先,也许你需要一个NameVirtualHost指令
我在我的apache.conf中有以下NameVirtualHost条目:
NameVirtualHost *:80 NameVirtualHost *:443
任何指针正确的方式来进行? 谢谢。
更新:
每Shane的答案和其他人 ,我已经改变了我的configuration以下,但现在有一个问题提供IP(一):443内容:
ports.conf
Listen IP(a):80 Listen IP(b):80 <IfModule mod_ssl.c> Listen IP(a):443 Listen IP(b):443 </IfModule>
virtual.conf
NameVirtualHost IP(a):80 NameVirtualHost IP(b):80 NameVirtualHost IP(a):443 NameVirtualHost IP(b):443
我想在IP(a)上提供的所有非SSL网站现在都是:
<VirtualHost IP(a):80>
IP(a)上的所有SSL站点现在都是:
<VirtualHost IP(a):443>
IP(b)上的所有非SSL站点现在都是:
<VirtualHost IP(b):80>
IP(b)上的所有SSL站点现在都是:
<VirtualHost IP(b):443>
IP(a):80,IP(b):80和IP(b):443上的所有站点都正确地服务。 IP(a):443没有任何服务 ,当启动Apache时,我得到以下警告:
[warn] _default_ VirtualHost overlap on port 443, the first has precedence
我已经改变了我的default文件来回应IP(a):
<VirtualHost IP(a):80>
并且改变了我的default-ssl文件来回应IP(a)
<VirtualHost IP(a):443>
上面有什么明显的错误? 我试着改变了许多不同的设置,但是上面的警告似乎总是被生成的。
您的NameVirtualHost指令必须完全匹配您的<VirtualHost>定义。
所以如果你有:
<VirtualHost 192.0.2.1:80> ServerName domain1 </VirtualHost> <VirtualHost 192.0.2.1:80> ServerName domain2 </VirtualHost>
…然后NameVirtualHost *:80不适用,您需要使用NameVirtualHost 192.0.2.1:80 。
你可能想看看这些链接:
http://de.wikipedia.org/wiki/Server_Name_Indication作为解释
和
http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI
如何configuration。
希望这可以帮助。