2016-11-18 7 views
0

У меня есть сервер 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, но подумал, что я попробую. Да, не повезло.

ответ

0

Итак, чтобы все кричали на своих мониторах, я сделал очевидный и просто установил SSL на весь сервер.

0

Я думаю, вы должны определить имяVirtualHost, оно поможет обрабатывать несколько доменов с одним ip. В httpd.conf define NameVirtualHost

После этого определение будет выполнять эту работу. Обязательно перезапустите apache.

+0

К сожалению, это не похоже на трюк. Я добавил 'NameVirtualHost *: 80' в свой httpd.conf, но проблема не устранена (дополнительно, когда я перезапускаю Apache, теперь она дает мне предупреждение:' AH00548: NameVirtualHost не имеет эффекта и будет удалена в следующей версии ' – CGriffin