У меня есть сервер Ubuntu с несколькими субдоменами, запущенными с виртуальных хостов (Apache). Большинство виртуальных хостов находятся в одном файле, однако их разделяют на два файла (так как Let's Encrypt не поддерживает несколько виртуальных хостов в одном .conf-файле). У меня есть сертификат SSL, установленный только на одном из поддоменов; другие домены, на которых я сейчас не забочусь о SSL.Предотвращение перенаправления поддоменов через порт SSL
Проблема, с которой я сталкиваюсь, заключается в том, что запросы HTTPS к другим подобластям направляются в один поддомен, и я не хочу этого.
Так, например, вот моя основная структура .conf файла:
<VirtualHost *>
ServerAdmin [email protected]
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /var/www/domain
<Directory "/var/www/domain">
...
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName sub.domain.com
DocumentRoot /var/www/sub_domain
<Directory "/var/www/sub_domain">
...
</Directory>
</VirtualHost>
А вот мой SSL установлена подобласть структура .conf файла:
<VirtualHost *:80>
ServerName ssl.domain.com
DocumentRoot /var/www/ssl_domain
<Directory "/var/www/ssl_domain">
....
</Directory>
</VirtualHost>
И, наконец, вот файл .conf что Let's Encrypt генерируется для прослушивания запросов HTTPS:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName ssl.domain.com
DocumentRoot /var/www/ssl_domain
<Directory "/var/www/ssl_domain">
....
</Directory>
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/key.key
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /path/to/chain.pem
</VirtualHost>
</IfModule>
Стандартные HTTP-запросы к y доменов работает нормально. HTTPS-запросы к субдомену с поддержкой SSL работают нормально. Но HTTPS-запросы в любой домен OTHER, чем «ssl.domain.com», сначала генерируют ошибку «Ваше соединение небезопасно», а затем загружаются с «ssl.domain.com». Я бы предпочел, чтобы он просто породил ошибку и оставил ее в этом, если я буду честен. Как предотвратить это перенаправление?
Я должен отметить, что я попытался изменить виртуальный хост по SSL субдомена от:
<VirtualHost *:443>
к:
<VirtualHost ssl.domain.com:443>
, которые не имели никакого эффекта.
EDIT: Я также попытался применить правило перезаписи htaccess для изменения https на http. Я не думал, что это сработает, учитывая, что запрос ударил виртуального хоста, прежде чем он когда-либо ударил .htaccess, но подумал, что я попробую. Да, не повезло.
К сожалению, это не похоже на трюк. Я добавил 'NameVirtualHost *: 80' в свой httpd.conf, но проблема не устранена (дополнительно, когда я перезапускаю Apache, теперь она дает мне предупреждение:' AH00548: NameVirtualHost не имеет эффекта и будет удалена в следующей версии ' – CGriffin