2015-01-25 2 views
0

Моя установка:
site1.com | Порт 80
site2.com | Порт 80
panel.site1.com | Переписывает порт 80 трафик до 443Apache2, vhosts и SSL

Это работает, пока кто-то не попробует https: // сайт [x] .com, и сервер перенаправляет их на мою панель. Мне нужно, чтобы эта панель была открыта для ~ 100 человек, которые будут ее использовать, но я не хочу, чтобы на нее спотыкались неверные люди.

Я попытался добавить:

<VirtualHost *:443> 
    ServerAdmin [email protected] 
    ServerName site1.com 
    ServerAlias www.site1.com 

    RewriteEngine On 
    RewriteCond %{HTTPS} on 
    RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} 
</VirtualHost> 

на виртуальный хост из site1.com, но она по-прежнему возвращает панель управления. Я считаю, что это потому, что сертификаты проверяются до того, как применяются правила vhost Apache, но я не уверен. Есть ли исправление для этого или это просто ограничения Apache2 + SSL?

ответ

2

Apache document states that.

Если соответствующие ИмяСерверов или ServerAlias ​​не найден в наборе виртуальных хостов, содержащих наиболее конкретного соответствующие IP-адрес и порт комбинацию, то первый перечисленный виртуальный хост, который соответствует, что будет использоваться.

И так выглядит, как вы сохранили <VirtualHost> раздел panel.site1.com поверх все другой виртуальной секции хоста. Из-за этого в нем будут размещены заявки на https://site[x].com, и поэтому вопрос не связан с SSL.

Update:

Вы можете попробовать ниже конфигурации и она должна работать.

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

    RewriteEngine on 
    RewriteCond %{HTTPS} off 
    RewriteCond %{HTTP_HOST} ^panel.site1.com 
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L] 
</VirtualHost> 

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

<VirtualHost *:443> 
    ServerName panel.site1.com 
    DocumentRoot /var/www/panel 
    SSLEngine on 
    SSLOptions +StrictRequire 
    SSLCertificateFile /opt/apache1/conf/server.crt 
    SSLCertificateKeyFile /opt/apache1/conf/server.key 
</VirtualHost> 

Как это работает

  1. Когда запрос будут для http://site1.com будет выбран первыйVirtualHost раздел .
  2. При запросе на http://site2.comвторойVirtualHost раздел будет выбран.
  3. Если запрос поступит http://site[x].com, тогда сначалаVirtualHost раздел будет выбран.
  4. Если запрос поступит на номер http://panel.site1.com, запрос будет перенаправлен на номер https://panel.site1.com, а раздел третийVirtualHost будет выбран.
+0

Я думал, что это была моя проблема, пока я не попросил другие сайты прослушать порт 443. Я обновил вопрос, чтобы показать свою неудачную попытку. – odie

+0

Я обновил свой ответ на основе вашего комментария. –

Смежные вопросы