Каков наилучший способ прозрачной перезаписи 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. Это может быть подстановочный сертификат, как упомянул Терри Лорбер, или вы можете использовать поле subjectAltName для добавления дополнительных имен хостов.
Если у вас возникли проблемы, сначала установите его <VirtualHost *>
и убедитесь, что он работает без SSL. SSL-соединение и сертификат - это отдельный уровень сложности, который вы можете настроить после того, как работает перезапись URI.
Существует apache mod_rewrite, или вы можете настроить apache для направления https://dbadmin.example.com к пути / to / example.com / dbadmin на сервере.
<VirtualHost *>
ServerName subdomain.domain.com
DocumentRoot /home/httpd/htdocs/subdomain/
</VirtualHost>
Если ваш SSL-сертификат не является подстановочным или многосайтовым, то я не думаю, что это сработает. Перезапись будет отображаться в браузере, а имя в адресной строке должно быть действительным по отношению к сертификату, иначе ваши пользователи увидят ошибку безопасности (которую они всегда могут принять и продолжить, но это не похоже на то, что вам нужно ).
Больше здесь .