У меня есть сервер 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>