Frage Mehrere Ports für denselben VirtualHosts deklarieren


Deklarieren mehrerer 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 Subdomains 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>

31
2018-01-06 04:24


Ursprung


Nur um zu bemerken. Sie können keinem virtuellen https und nicht-https virtuellen Host beitreten. <VirtualHost *: 80 *: 443>. 80 Kann "SSLEngine on" nicht haben. Sie müssen 2 separate VirtualHost-Deklarationen für SSL und Nicht-SSL haben. - Gacek
Offenbar, 4045 ist ein unsicherer Port in Chrome. - Ken Ingram


Antworten:


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

Wenn Sie möchten, dass derselbe virtuelle Host mehrere Ports abhört, tun Sie Folgendes:

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 Domain-Namen, es sei denn, Sie müssen ein anderes Protokoll verwenden.

Bei SSL-Namen-basierten Virtualhosts müssen Sie besonders vorsichtig sein: Per Definition können nicht mehrere Zertifikate auf derselben IP-Adresse sein: Port. Um Zertifikatsfehler zu vermeiden, müsste es also ein Wilcard-Zertifikat sein, das alle servierten Domainnamen abdeckt.


54
2018-01-06 07:19



+1 aber einige kleine Korrektur: SSL-Zertifikate sind nicht gebunden an IP-Adressen, aber an allgemeine Namen (CN), die gleich sein müssen Hostname. Auch mit der SNI-Erweiterung ist es möglich, mehrere virtuelle Hosts mit unterschiedlichen Zertifikaten auf derselben IP-Adresse zu haben. (de.wikipedia.org/wiki/Server_Name_Indication) - Daniel Rikowski
+1, für SSL sollte es <VirtualHost *: 80 *: 443> sein - fedmich