Apache2 SSL 配置 - apache 总是选择第一个基于 ip 的虚拟主机

Apache2 SSL 配置 - apache 总是选择第一个基于 ip 的虚拟主机

我们有一台运行 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 请求时总是会找到包含的第一个虚拟主机,但找不到第二个虚拟主机。这导致 apache 从包含的第一个 vhost 为两个 ipaddress 提供 ssl 证书。这是一个非常不理想的结果。

所有的ip地址配置都是正确的。运行apache2ctl -S说所有配置都是正确的。

我们不使用任何基于名称的虚拟主机。

无论首先包含哪个 :443 vhost,apache 都只会提供来自第一个包含的 vhost 的证书。

据我们了解,如果 apache 没有找到针对 ip 地址:端口的虚拟主机,它将默认使用它找到的第一个 vhost 作为默认值。

为什么会发生这种情况?

答案1

看起来 Apache2 要求ServerName所有 s 都使用这个指令<VirtualHost>。我们的两个 SSL 虚拟主机最终具有相同的 IP 地址ServerName,并且其中一个最终会成为两个 IP 地址的默认地址。

相关内容