Первое: параметр в <VirtualHost …>
не работает таким образом. В системах «один IP на домен» он предназначен для указания того, к какому IP-адресу будет привязан веб-сервер (то есть к какому адресу он будет получать соединения) для этого виртуального хоста. Он не предназначен для выбора виртуального хоста на основе HTTP «Host:» или TLS SNI.
Тем не менее, вы говорите в комментариях, что у вас есть только один IP-адрес (поэтому вы хотите использовать TLS SNI). В этом случае все блоки виртуальных хостов должны быть привязаны к одному *
и тому же адресу, а фактическое имя домена должно быть указано как ServerName
.
Второе: в конфигурации Apache первый соответствующий блок VirtualHost побеждает. Если у вас есть подстановочный знак ServerName
над точными совпадениями, он всегда будет выбран. Поэтому убедитесь, что ваши виртуальные хосты упорядочены правильно.
# The specific subdomains go first... <VirtualHost *:443> ServerName servers.domain1.com DocumentRoot /app/corporate/mediaserver/public SSLEngine on SSLCertificateFile /app/corporate/mediaserver/certs/fullchain.pem SSLCertificateKeyFile /app/corporate/mediaserver/certs/privkey.pem </VirtualHost> # ...and the wildcard is last: <VirtualHost *:443> ServerName domain1.com ServerAlias *.domain1.com DocumentRoot /var/www/domain2 SSLEngine on SSLCertificateFile /app/domain2/certs/fullchain.pem SSLCertificateKeyFile /app/domain2/certs/domain2.com.key </VirtualHost>
(Эта SSLCertificateChainFile
настройка устарела в Apache 2.4. SSLCA*
Настройки предназначены для аутентификации клиента - если вы ее не используете, они вам тоже не нужны.)