Декларування декількох портів для одних і тих же 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>

Як я можу оголосити новий порт ("прослухати", ім'я сервера, ...) для "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>

3
Просто зазначити. Ви не можете об'єднати віртуальний хост https та не https. <VirtualHost *: 80 *: 443>. 80 Не може бути "SSLEngine увімкнено". У вас повинно бути дві окремі декларації VirtualHost для SSL та non-SSL.
Гацек

Відповіді:


63

Питання дещо неоднозначне, але я спробую допомогти.

Якщо ви хочете, щоб той самий virtualhost прослуховував у кількох портах, виконайте це:

Listen 80
NameVirtualHost *:80

Listen 8080    
NameVirtualHost *:8080

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

Взагалі кажучи, ви не визначаєте кілька VirtualHosts на основі імен одного і того ж доменного імені, якщо вам не потрібно використовувати інший протокол.

Для віртуальних хостів на основі імен SSL ви повинні бути дуже обережними: за визначенням не може бути декількох сертифікатів на одному і тому ж IP: Порті, тож, щоб уникнути помилок сертифікатів, він повинен бути сертифікатом wilcard, що охоплює всі обслуговувані доменні імена.


2
+1, але невелика корекція: сертифікати SSL не прив’язані до IP-адрес, а до загальних імен (CN), які повинні дорівнювати імені хоста . Також з розширенням SNI на одній і тій же IP-адресі можна мати кілька віртуальних хостів з різними сертифікатами. ( en.wikipedia.org/wiki/Server_Name_Indication )
Даніель Ріковський

3
+1 також для SSL це повинно бути <VirtualHost *: 80 *: 443>
fedmich
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.