Назад | Перейти на главную страницу

Несколько IP-адресов Apache и SSL

У меня есть сервер Apache с двумя поддоменами, один из которых настроен с использованием SSL.

Чтобы другой субдомен работал, нам, конечно, пришлось настроить новый IP (потому что другой был настроен с SSL).

Однако мы не можем связаться с нашим новым поддоменом и не можем понять, почему. Конфигурация Apache должна быть в порядке.

Вот фрагмент директив наших виртуальных хостов:

# ssl domain
<VirtualHost 1.2.3.4.5:80>
    ServerName sub1.example.com
    DocumentRoot /var/www/sub1

    <Directory "/var/www/sub1">
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>


# "regular" domain
<VirtualHost 2.3.4.5.6:80>
    DocumentRoot /var/www/sub2
    ServerName sub2.example.com

    <Directory "/var/www/sub2">
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

Запросы к sub1.example.com в порядке, но ничего не происходит, когда мы пробуем sub2.example.com.

Конфигурация "по умолчанию" для Apache:

Listen 80
ServerName sub1.example.com

Мы запускаем Apache / 2.2.15 на CentOS 6.

Для начала убедитесь, что в вашей конфигурации есть что-то похожее на это:

NameVirtualHost *:80  
NameVirtualHost *:443

Как упоминалось в комментариях, я гарантирую вам, что, хотя каждому уникальному виртуальному хосту SSL нужен собственный IP-адрес, вы МОЖЕТЕ иметь столько же виртуальных хостов без SSL (например, порт 80) на любом из этих IP-адресов.

Проблема, с которой вы, скорее всего, столкнетесь, - это способ, которым Apache по умолчанию mod_ssl config настроен.

В CentOS это должно быть в /etc/httpd/conf.d/ssl.conf.

Вы увидите, что по какой-то причине Apache (CentOS?) Имеет предварительно настроенный виртуальный хост SSL, использующий _default_ в этом файле - по сравнению с образцом внизу httpd.conf, или запись в sites-available в системах Debian ...

Могу поспорить, что именно поэтому ваша первоначальная конфигурация SSL никогда не работала, потому что она дублировалась на том же IP (дефолт), который настроен с использованием виртуального хоста SSL по умолчанию в этом по умолчанию ssl.conf файл.

Обычно, когда я настраиваю новый сервер CentOS Apache, я комментирую все VirtualHost запись в этом файле и поместите нужную мне конфигурацию вместе со всеми остальными в httpd.conf.

Мне удалось заставить его работать, создав другую директиву vhost для sub1.example.com, которая прослушивает порт 80.

Я предполагаю, что наш поставщик где-то сделал взлом, который перенаправляет все запросы с первого IP-адреса на HTTPS. Это явно причина, по которой нам нужен дополнительный выделенный IP-адрес. Что немного странно, так это то, что директива sub1.example.com, которая прослушивает порт 80, ничего не делает, кроме того, что запросы не идут на sub2 .example.com. Пользователи, которые получают доступ к sub1.example.com через HTTP, перенаправляются на HTTPS (где-то ..).

Оно работает :)

NameVirtualHost *:80
NameVirtualHost *:443

# sub1.example.com PORT 80
<VirtualHost *:80>
    ServerName sub1.example.com
    DocumentRoot /var/www/sub1

    <Directory "/var/www/sub1">
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

# sub1.example.com SSL
<VirtualHost *:443>
    ServerName sub1.example.com
    DocumentRoot /var/www/sub1

    <Directory "/var/www/sub1">
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

# sub2.example.com PORT 80
<VirtualHost *:80>
    DocumentRoot /var/www/sub2
    ServerName sub2.example.com

    <Directory "/var/www/sub2">
        AllowOverride All
        Order Allow,deny
        Allow from all
    </Directory>
</VirtualHost>