У меня есть виртуальный сервер, размещенный у интернет-провайдера с 2 публичными адресами IPv4. Я хочу запустить несколько поддоменов (больше 2) с Apache и обслуживать их как через HTTP, так и через HTTPS. Сертификат SSL является подстановочным для *.mydomain.com.
Я пытался настроить Apache в Debian таким образом, но не получилось. Либо мои виртуальные хосты не принимаются, либо я получаю ошибки SSL. (Я знаю, что Apache не видит запрошенное имя хоста перед обслуживанием сертификата, но сертификат включает все возможные поддомены)
Пожалуйста, помогите создать httpd.conf, который лучше всего работает с конфигурацией Apache Debian.
Все подробности:
- Apache прослушивает *:80 для HTTP и *:443 для HTTPS
- Все NameVirtualHosts, псевдонимы и т. д. должны быть определены для обоих портов/протоколов одновременно.
- по умолчанию mydomain.com и www.mydomain.com должны быть корневыми в /var/www
- дополнительные NameVirtualHosts для foo.mydomain.com и bar.mydomain.com и т.д., которые можно настроить особым образом, например, чтобы иметь другой DocumentRoot
решение1
Апачиможетсм. запрошенное имя хоста, используяУказание имени сервера TLS.
Однако для этого требуется относительно новый веб-браузер. Например, те, кто использует Internet Explorer в Windows XP, получат сообщения о несоответствии сертификатов для дополнительных доменов. (К счастью, пользователи WinXP/IE почти вымерли.)Статья в Википедииесть список, ивот тестовая страницаесли вы не уверены.
NameVirtualHost *:80
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www
<Directory /var/www/>
Options Indexes FollowSymlinks MultiViews
</Directory>
</VirtualHost>
NameVirtualHost *:443
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www
<Directory /var/www/>
Options Indexes FollowSymlinks MultiViews
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/private/example.com.pem
</VirtualHost>
Дополнительные (под)домены:
<VirtualHost *:80>
ServerName foo.example.com
DocumentRoot /sites/foo
</VirtualHost>
<VirtualHost *:443>
ServerName foo.example.com
DocumentRoot /sites/foo
SSLEngine on
SSLCertificateFile /etc/ssl/private/foo.example.com.pem
</VirtualHost>