Настройте Apache для обслуживания нескольких поддоменов через HTTP + HTTPS

Настройте Apache для обслуживания нескольких поддоменов через HTTP + HTTPS

У меня есть виртуальный сервер, размещенный у интернет-провайдера с 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>

Связанный контент