
我們有一台運行 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 從兩個 ip 位址包含的第一個虛擬主機提供 ssl 憑證。這是非常不希望有的結果。
所有IP位址配置均正確。運行apache2ctl -S
表明所有配置都正確。
我們不使用任何基於名稱的虛擬主機。
首先包含哪一個 :443 vhost 並不重要,apache 將只從包含的第一個 vhost 提供憑證。
據我們了解,如果 apache 沒有找到 ip 位址:連接埠的虛擬主機,它將預設使用它找到的第一個虛擬主機作為預設值。
為什麼會發生這種情況呢?
答案1
看起來 Apache2 需要ServerName
所有<VirtualHost>
s 的指令。我們的兩個 SSL 虛擬主機最終具有相同的 IP 位址ServerName
,其中一個最終成為兩個 IP 位址的預設值。