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

Как отключить https-доступ к определенным виртуальным хостам?

Хорошо, у меня есть сервер Apache, настроенный со следующими директивами:

NameVirtualHost *:80

<VirtualHost *:80>  
ServerName example1.com  
ServerAlias www.example1.com  
DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
ServerName example2.com
ServerAlias *.example2.com
DocumentRoot /var/www/example2
</VirtualHost>

<VirtualHost example1.com:443>
DocumentRoot /var/www/html
ServerName example1.com:443
SSLEngine on
...
</VirtualHosts>

Таким образом, example1.com имеет поддержку SSL, и к нему можно получить доступ через http: // example1.com или https: // example1.com. Однако это имеет непреднамеренный побочный эффект - отображение https: // example1.com при посещении https: // example2.com в моем браузере. Я хочу как-то отключить https: // example2.com или перенаправить его на http: // example2.com, чтобы я не получал предупреждения и неправильный сайт при посещении.

Вы не сможете избежать предупреждения, если только example1 и example2 не находятся на разных IP-адресах или вы не получите сертификат SSL, охватывающий оба имени - страница с ошибкой или перенаправление не могут произойти до тех пор, пока не будет установлено SSL-соединение.

При этом должно сработать что-то в этом роде:

NameVirtualHost *:443
<VirtualHost *:443>
  ServerName example1.com
  SSLEngine on
  #...
</VirtualHost>
<VirtualHost *:443>
  ServerName example2.com
  SSLEngine on
  # same certificate config here as on example1, unless you're wanting to use TLS SNI
  # then, let's redirect the user to non-SSL
  Redirect permanent / http://example2.com/
</VirtualHost>

Для этого вам необходимо иметь указание имени сервера (SNI). Пожалуйста, обратитесь по ссылке: http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI для подробностей.

Я не думаю, что вам следует указывать: 443 на ServerName example1.com:443

это должно быть правильно настроить

<VirtualHost example1.com:443> //change example1.com to ip address is a good habit
DocumentRoot /var/www/html
ServerName example1.com
SSLEngine on
...
</VirtualHosts>