
У нас есть сервер Ubuntu 10.04, на котором запущен Apache 2.2.14 с 4 виртуальными хостами на основе IP. У нас есть 2 IP-адреса и сертификат ssl для каждого IP-адреса. Например:
<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 обслуживает ssl-сертификат с первого включенного vhost для ОБОИХ IP-адресов. Крайне нежелательный результат.
Все конфигурации ip-адресов верны. Запуск apache2ctl -S
говорит, что все конфигурации верны.
Мы не используем виртуальные хосты на основе имен.
Неважно, какой виртуальный хост :443 включен первым, Apache будет обслуживать только сертификат из первого включенного виртуального хоста.
Мы понимаем, что Apache по умолчанию будет использовать первый найденный им виртуальный хост в качестве хоста по умолчанию, если не найдет виртуальный хост для IP-адреса:порта.
Почему это происходит?
решение1
Похоже, Apache2 требует ServerName
директиву для всех <VirtualHost>
s. Наши два SSL vhosts в конечном итоге имели одинаковые значения, ServerName
и один из них в конечном итоге стал бы значением по умолчанию для обоих IP-адресов.