Использование mod_rewrite для имитации виртуальных хостов SSL?

StackOverflow https://stackoverflow.com/questions/8355

  •  08-06-2019
  •  | 
  •  

Вопрос

Как лучше всего прозрачно перезаписать URL-адрес через SSL-соединение с помощью Apache 2.2?

Apache 2 изначально не поддерживает несколько виртуальных хостов на основе имен для SSL-соединения, и я слышал, что mod_rewrite может в этом помочь.Я хотел бы сделать что-то вроде этого:

Я настроил сервер так, чтобы к сайтам могли получить доступ

https://secure.example.com/dbadmin

но я бы хотел, чтобы это было так https://dbadmin.example.com

Как настроить так, чтобы правило перезаписи переписывало dbadmin.example.com на secure.example.com/dbadmin, но без отображения перезаписи в адресной строке клиента (т. е.клиент по-прежнему будет видеть только dbadmin.example.com), по всему https?

Это было полезно?

Решение

Настройте один VirtualHost для обслуживания как Secure.example.com, так и dbadmin.example.com (что делает его единственным *:443 VirtualHost, который достигает этого).Затем вы можете использовать mod_rewrite чтобы настроить URI для запросов к dbadmin.example.com:

<VirtualHost *:443>
    ServerName secure.example.com
    ServerAlias dbadmin.example.com

    RewriteEngine on
    RewriteCond %{SERVER_NAME} dbadmin.example.com
    RewriteRule !/dbadmin(.*)$ /dbadmin$1
</VirtualHost>

Ваш SSL-сертификат должен быть действителен как для secure.example.com, так и для dbadmin.example.com.Это может быть групповой сертификат, как упоминал Терри Лорбер, или вы можете использовать субъектAltName поле для добавления дополнительных имен хостов.

Если у вас возникли проблемы, сначала настройте его на <VirtualHost *> и проверьте, работает ли он без SSL.SSL-соединение и сертификат — это отдельный уровень сложности, который можно настроить после того, как перезапись URI заработает.

Другие советы

Если ваш SSL-сертификат не является «подстановочным» или многосайтовым, я не думаю, что это сработает.Перезапись отобразится в браузере, и имя в адресной строке должно соответствовать сертификату, иначе ваши пользователи увидят ошибку безопасности (которую они всегда могут принять и продолжить, но это не похоже на то, что вам хотелось бы). ).

Более здесь.

Существует apache mod_rewrite, или вы можете настроить apache для прямого доступа. https://dbadmin.example.com путь/to/example.com/dbadmin на сервере

<VirtualHost *>
ServerName subdomain.domain.com
DocumentRoot /home/httpd/htdocs/subdomain/
</VirtualHost>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top