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

35

Объявите несколько портов для одного и того же 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>
user65567
источник
3
Просто отметить. Вы не можете объединить виртуальный хост https и не https в один. <VirtualHost *: 80 *: 443>. 80 Не может быть "SSLEngine on". У вас должно быть 2 отдельных объявления VirtualHost для SSL и не-SSL.
Гачек
Судя по всему, 4045 является небезопасным портом в Chrome .
Кен Инграм

Ответы:

63

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

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

Listen 80
NameVirtualHost *:80

Listen 8080    
NameVirtualHost *:8080

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

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

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


источник
2
+1, но есть небольшое исправление: SSL-сертификаты привязаны не к IP-адресам, а к общим именам (CN), которые должны совпадать с именем хоста . Также с расширением SNI возможно иметь несколько виртуальных хостов с разными сертификатами на одном IP-адресе. ( en.wikipedia.org/wiki/Server_Name_Indication )
Даниэль Риковски
3
+1 тоже, для SSL это должно быть <VirtualHost *: 80 *: 443>
fedmich