Назад | Перейти на главную страницу

Виртуальный хост Apache по имени

Можно ли заменить "*" на доменное имя или субдомен?

<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. Когда мы это сделали, все заработало.