Mehrere Ports für denselben VirtualHosts deklarieren


35

Deklarieren Sie mehrere Ports für denselben 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>

Wie kann ich einen neuen Port ('listen', ServerName, ...) für 'domain.localhost' deklarieren?

Wenn ich den folgenden Code hinzufüge, funktioniert Apache (zu viel) auch für alle anderen Subdomänen von '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
Nur um zu merken. Sie können den virtuellen Host mit und ohne https nicht zu einem verbinden. <VirtualHost *: 80 *: 443>. 80 "SSLEngine on" kann nicht aktiviert sein. Sie müssen 2 separate VirtualHost-Deklarationen für SSL und Nicht-SSL haben.
Gacek

Antworten:


63

Die Frage ist etwas mehrdeutig, aber ich werde versuchen zu helfen.

Wenn derselbe virtuelle Host mehrere Ports überwachen soll, gehen Sie wie folgt vor:

Listen 80
NameVirtualHost *:80

Listen 8080    
NameVirtualHost *:8080

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

Im Allgemeinen definieren Sie nicht mehrere namensbasierte VirtualHosts mit demselben Domänennamen, es sei denn, Sie müssen ein anderes Protokoll verwenden.

Bei auf SSL-Namen basierenden virtuellen Hosts muss besonders vorsichtig vorgegangen werden: Per Definition können sich nicht mehrere Zertifikate auf demselben IP: Port befinden. Um Zertifikatfehler zu vermeiden, muss es sich also um ein Wilcard-Zertifikat handeln, das alle bereitgestellten Domänennamen abdeckt.


2
+1, aber eine kleine Korrektur: SSL-Zertifikate sind nicht an IP-Adressen gebunden, sondern an Common Names (CN), die dem Hostnamen entsprechen müssen . Auch mit der SNI-Erweiterung ist es möglich, mehrere virtuelle Hosts mit unterschiedlichen Zertifikaten auf derselben IP-Adresse zu haben. ( en.wikipedia.org/wiki/Server_Name_Indication )
Daniel Rikowski

3
+1 auch für SSL sollte es <VirtualHost *: 80 *: 443> sein
fedmich 10.06.14
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.