У меня есть сервер CentOS 6 с Apache (httpd-2.2.15-15.el6.centos.x86_64). Теперь я настроил TLS SNI с помощью OpenSSL, и это было довольно просто.
Теперь у меня есть два хоста TLS на одном IP-адресе, и я хочу указать, какой из них должен быть по умолчанию, если клиент не поддерживает TLS SNI (да, я смотрю на вас, git / hg).
Глядя на документацию Apache, должно быть как минимум два способа сделать это:
К сожалению, у меня ни один метод не работает. Может ли кто-нибудь объяснить мне, как достичь цели и почему два вышеперечисленных метода не работают так, как я ожидал?
1-й включен будет по умолчанию, поэтому переименуйте файл конфигурации vhost по умолчанию во что-то вроде 00-config_file_name
так что это 1-й загруженный.
Из документов Apache: Углубленное обсуждение сопоставления виртуальных хостов
Хостинг на основе имени
Если запись соответствует виртуальному хосту на основе имен, список имен содержит одну или несколько структур виртуальных хостов. Этот список содержит vhosts в том же порядке, в котором директивы VirtualHost появляются в файле конфигурации.
Первый виртуальный хост в этом списке (первый виртуальный хост в файле конфигурации с указанным IP-адресом) имеет наивысший приоритет и перехватывает любой запрос на неизвестное имя сервера или запрос без поля заголовка Host :.
Если клиент предоставил поле заголовка Host:, в списке выполняется поиск подходящего виртуального хоста, и выполняется первое попадание в ServerName или ServerAlias, и запрос обслуживается этим виртуальным хостом. Поле заголовка Host: может содержать номер порта, но Apache всегда совпадает с реальным портом, на который клиент отправил запрос.
Поэтому, если вы используете только 1 файл конфигурации для своих vhosts, вам необходимо упорядочить их в файле, и если вы включаете несколько отдельных файлов (включая каталог ../sites-enabled, который является способом определения сайта образца Apache2), вам необходимо загрузить файлы в том порядке, в котором вы должны сначала определить сайт по умолчанию, и они загружаются в соответствии с алфавитным порядком каталогов.
Всегда в соответствии с одним и тем же документом Apache (ссылка на следующие примеры на странице), если вы используете _default_
vhost, он должен быть определен перед другими vhosts, и это именно то, что вы будете делать, определяя vhost в нужном вам порядке, но при использовании _default_
vhost, главный сервер больше не будет отвечать на запросы.