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

Объявление нескольких портов для одного и того же VirtualHosts

Объявите несколько портов для одного и того же VirtualHosts:

SSLStrictSNIVHostCheck off
# Apache setup which will listen for and accept SSL connections on port 443.
Listen 443
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:443

<VirtualHost *:443>
  ServerName domain.localhost
  DocumentRoot "/Users/<my_user_name>/Sites/domain/public"
  <Directory "/Users/<my_user_name>/Sites/domain/public">
    Order allow,deny
    Allow from all
  </Directory>

  # SSL Configuration
  SSLEngine on
  ...
</VirtualHost>

Как я могу объявить новый порт ('listen', ServerName, ...) для 'domain.localhost'?

Если я добавлю следующий код, apache будет работать (слишком много) также для всех других поддоменов 'domain.localhost' (subdomain1.domain.localhost, subdomain2.domain.localhost, ...):

<VirtualHost *:80>
  ServerName pjtmain.localhost:80
  DocumentRoot "/Users/Toto85/Sites/pjtmain/public"
  RackEnv development
  <Directory "/Users/Toto85/Sites/pjtmain/public">
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

Вопрос несколько неоднозначный, но постараюсь помочь.

Если вы хотите, чтобы один и тот же виртуальный хост прослушивал несколько портов, сделайте следующее:

Listen 80
NameVirtualHost *:80

Listen 8080    
NameVirtualHost *:8080

<VirtualHost *:80 *:8080>
  ServerName some.domain.name
  ServerAlias some.other.domain.name
  ....
</VirtualHost>

Вообще говоря, вы не определяете несколько виртуальных хостов на основе имен одного и того же доменного имени, если вам не нужно использовать другой протокол.

Для виртуальных хостов на основе SSL-имен вы должны быть особенно осторожны: по определению не может быть несколько сертификатов на одном IP: Port, поэтому, чтобы избежать ошибок сертификата, это должен быть сертификат Wilcard, охватывающий все обслуживаемые доменные имена.