Посещение https версии домена с отключенным ssl показывает другую страницу - PullRequest
0 голосов
/ 12 июня 2018

Я использую Webmin / virtualmin и у меня есть несколько виртуальных хостов:

Virtual Server  Any         80  Automatic   /var/www/html
Virtual Server  Any         80  website1.nl /home/website1/public_html
Virtual Server  XX.XX.XXX.X 443 website1.nl /home/website1/public_html
Virtual Server  Any         80  website2.nl /home/website2/public_html

На сайте 1 включен SSL, но на сайте 2 нет.

Всякий раз, когда я перехожу на https://website2.nl, онвызывает призрак website1.nl:443.Это потому, что website2 не имеет своего собственного 443.

Я пытался добавить это:

Virtual Server  XX.XX.XXX.X         443 Automatic   /var/www/html

Но это никогда не сработало бы ...

Я хочу заблокироватьэто случилось.Он должен либо 404, либо по крайней мере включать корень по умолчанию /var/www/html.

1 Ответ

0 голосов
/ 13 июня 2018

Если у вас только 1 IP на сервере:

  • <VirtualHost *:80> (== Любой, порт 80) будет сопоставлять запросы с http://IP
  • <VirtualHost XXX.XXX.XXX.XXX:443> будет сопоставлять запросы с http://XXX.XXX.XXX.XXX
  • Но если XXX.XXX.XXX.XXX = = IP, то здесь возникает проблема.

Еслиоба домена находятся на одном и том же IP, запросы к порту: 443 будет восприниматься Apache как переход к единственному <VirtualHost>, который соответствует XXX.XXX.XXX.XXX:443, независимо от имени домена.Соответствие <VirtualHost> и согласование сертификата происходит за до доменного имени.

И даже если их много, Apache возьмет первое (сверху вниз), найденное в конфигурациипоскольку SSL-квитирование выполняется до того, как будет выполнено запрос имени домена.

Если у вас 2 IP-адреса на сервере

Настройте отдельный IP-адрес для ваших доменов.Разделение по IP позволяет Apache знать, какой сайт вам нужен.Итак:

<VirtualHost IP1:80>
    ServerName website1.nl
    [...]
</VirtualHost>

<VirtualHost IP2:443>
    ServerName website2.nl
    [...]
</Virtualhost>

Таким образом, Apache просто отклонит запрос к http s : // IP1 /, поскольку VirtualHost не совпадает.Но настройка второго IP-адреса не всегда возможна.

Частичное решение

Здесь я использую вашу настройку <VirtualHost>.Так что

<VirtualHost IP1:80>
    ServerName website1.nl
    [...]
</VirtualHost>

<VirtualHost XXX.XXX.XXX.XXX:443>
    ServerName website2.nl
    [...]
</VirtualHost>

where XXX.XXX.XXX.XXX == IP1

Вы можете установить RewriteRule в *: 443 <VirtualHost>, который говорит, что перенаправить запросы для website1.nl обратно на IP1: 80.

RewriteCond %{HTTP_HOST} website1.nl
RewriteRule (.*) http://IP1:80/$1

Одна проблема сДело в том, что ваш SSL-сертификат, скорее всего, настроен для website2.nl, поэтому браузер заметит, что запрашиваемое имя домена - website1.nl, и поэтому не соответствует сертификату.Вот почему это частичное решение.Вы можете настроить сертификат для обоих доменов, что устранит эту проблему, зависит от уровня контроля над созданием сертификата (полная гибкость или нет).

...