Надеюсь, заголовок понятен.
Как предотвратить отправку HTTPS-запросов для виртуальных хостов без поддержки SSL на первый виртуальный хост с поддержкой SSL (настройка - Apache-SNI).
Например, используя мою сокращенную конфигурацию ниже, запросы на https://example.com
(виртуальный хост без SSL) обслуживаются Apache на виртуальном хосте с поддержкой SSL https://example.org
. Я хотел бы отключить это поведение и, возможно, ответить соответствующим кодом ответа HTTP (не уверен, что это такое).
Возможно, это даже невозможно, но я подумал, что спрошу.
# I actually have a SNI setup, but it's not demonstrated here.
# I don't think it's relevant in this situation.
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerName example.org
</VirtualHost>
<VirtualHost *:443>
ServerName example.org
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
</VirtualHost>
РЕДАКТИРОВАТЬ: Может быть, правило mod_rewrite в первом ssl-vhost?
Как говорят документы Apache, когда нет ServerName
совпадает с именем хоста, указанным в веб-запросе, первое VirtualHost
будет использоваться соответствующая комбинация IP / порта.
Таким образом, вам просто нужно предоставить виртуальный хост по умолчанию, который не обслуживает контент или контент по вашему выбору, и он должен быть первым, который анализируется Apache при загрузке своей конфигурации.
Если вы вообще не хотите, чтобы определенные хосты были доступны через https, поместите их на отдельный IP-адрес, на котором вы настроили Apache, чтобы Listen
на порт 443.
Я знаю, это было давно ... Но как насчет SSLStrictSNIVHostCheck вариант. Насколько я понимаю, это решает вашу проблему.