Можно ли заменить "*" на доменное имя или субдомен?
<VirtualHost *:443>
Обновить
Проблема в том, что я получаю эту ошибку при загрузке apache:
[Mon Aug 16 13:42:48 2010] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
У меня virtualHost: 443 для поддомена и один для основного домена. Когда я удаляю поддомен, я больше не получаю эту ошибку.
в качестве примечания, если эта конфигурация может быть более эффективной, дайте мне знать, как
конфигурация domain.com
<VirtualHost *:80>
ServerAdmin webmaster@domain.com
ServerName www.domain.com
ServerAlias domain.com
ServerAlias xx.xxx.xxx.xx
# Directory Root.
DocumentRoot /sites/domain.com/www/
# Logfiles
ErrorLog /sites/domain.com/logs/error.log
CustomLog /sites/domain.com/logs/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerName www.domain.com
# Directory Root.
DocumentRoot /sites/domain.com/www/
# Enable SSL
SSLEngine On
SSLCertificateFile /sites/domain.com/ssl/star_domain_com.crt
SSLCertificateKeyFile /sites/domain.com/ssl/ikeyless.key
SSLCertificateChainFile /sites/domain.com/ssl/DigiCertCA.crt
SetEnvIf User-Agent ..*MSIE.*. nokeepalive ssl-unclean-shutdown
</VirtualHost>
support.domain.com конфигурация
<VirtualHost *:80>
ServerName support.domain.com
# Directory Root.
DocumentRoot /sites/support.domain.com/www/
# Logfiles
ErrorLog /sites/support.domain.com/logs/error.log
CustomLog /sites/support.domain.com/logs/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerName support.domain.com
# Directory Root.
DocumentRoot /sites/support.domain.com/www/
# Logfiles
ErrorLog /sites/support.domain.com/logs/error.log
CustomLog /sites/support.domain.com/logs/access.log combined
# Enable SSL
SSLEngine On
SSLCertificateFile /sites/domain.com/ssl/star_domain_com.crt
SSLCertificateKeyFile /sites/domain.com/ssl/domain.key
SSLCertificateChainFile /sites/domain.com/ssl/DigiCertCA.crt
SetEnvIf User-Agent ..*MSIE.*. nokeepalive ssl-unclean-shutdown
</VirtualHost>
Когда я пытаюсь получить доступ к support.domain.com, он указывает на domain.com и не загружает наш сайт поддержки при использовании https, он отлично работает в http.
Да, это очень мощная часть конфигурации apache.
Например, предположим, что вы обслуживаете домен www.domain.tld и вы хотите добавить виртуальный хост www.otherdomain.tld, который указывает на тот же IP-адрес. Затем вы просто добавляете в httpd.conf следующее:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>
<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>
См. Полную документацию здесь: http://httpd.apache.org/docs/2.2/vhosts/
Окончательный ответ: добавьте ИмяVirtualHost *: 443 директиву к вашей конфигурации по умолчанию.
Вы можете указать конкретный IP-адрес с помощью звездочки, если IP-адрес указан с помощью NameVirtualHost. Имя указано в ServerName
и ServerAlias
.
Звездочка соответствует всем IP-адресам, к которым Apache привязывается в VirtualHost
.
Вы что-нибудь делали с виртуальным хостом по умолчанию?
Если вы не выполняете никаких настроек, apache создаст отдельный файл конфигурации для некоторых материалов SSL в conf.d / ssl.conf, и там он объявит виртуальный хост с именем _default_:443
.
Если я добавлю vhost как *: 443 в свою основную конфигурацию, он выдаст ту же ошибку, и если я удалю _default_:443
vhost в conf.d / ssl.conf - нет.
Не для SSL:
Вы не можете использовать виртуальные хосты на основе имен с SSL, потому что подтверждение SSL (когда браузер принимает сертификат защищенного веб-сервера) происходит перед HTTP-запросом, который идентифицирует соответствующий виртуальный хост на основе имени. Если вы планируете использовать виртуальные хосты на основе имен, помните, что они работают только с вашим незащищенным веб-сервером.
Обновить:
Судя по всему, последние веб-серверы поддерживают это .. Проверьте ссылку, предоставленную Warner.
Мы решили эту проблему, поместив весь наш SSL на определенный IP-адрес, а затем все остальные сайты на дополнительный IP. Когда мы это сделали, все заработало.