Назад | Перейти на главную страницу

Установить по умолчанию TLS SNI vhost для Apache 2.2 в CentOS 6

У меня есть сервер 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, главный сервер больше не будет отвечать на запросы.