我们有一个运行Apache 2.2.14的Ubuntu 10.04服务器和4个基于IP的虚拟主机。 我们有2个IP地址和每个IP地址的SSL证书。 例如:
<VirtualHost 1.1.1.1:80> <VirtualHost 1.1.1.1:443> -> SSL 1 <VirtualHost 2.2.2.2:80> <VirtualHost 2.2.2.2:4443> -> SSL 2
无论我们做什么,出于某种原因,Apache总是会在提供https请求时find第一个虚拟主机,而不是第二个虚拟主机。 这导致apache从第一个vhost包含的两个ip地址中提供ssl证书。 一个非常不希望的结果。
所有的IP地址configuration都是正确的。 运行apache2ctl -S说所有configuration都是正确的。
我们不使用任何基于名称的虚拟主机。
不pipe哪个:首先包含443个虚拟主机,apache将只提供包含第一个虚拟主机的证书。
这是我们的理解,如果没有findIP地址:端口的虚拟主机,Apache将默认使用它find的第一个虚拟主机。
为什么会这样呢?
看起来像Apache2需要所有的<VirtualHost>的ServerName指令。 我们的两个SSL虚拟主机最终拥有相同的ServerName并且最终将成为两个IP地址的默认值。