Deklarowanie wielu portów dla tych samych VirtualHosts

35

Zadeklaruj wiele portów dla tych samych 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>

Jak mogę zadeklarować nowy port („Listen”, ServerName, ...) dla „domain.localhost”?

Jeśli dodam następujący kod, apache działa (zbyt dużo) również dla wszystkich pozostałych poddomen „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>
użytkownik65567
źródło
3
Uwaga: Nie możesz dołączyć do wirtualnego hosta https i non-https w jednym. <VirtualHost *: 80 *: 443>. 80 Nie można włączyć „SSLEngine on”. Musisz mieć 2 oddzielne deklaracje VirtualHost dla SSL i innych niż SSL.
Gacek
Najwyraźniej 4045 to niebezpieczny port w Chrome .
Ken Ingram,

Odpowiedzi:

63

Pytanie jest nieco dwuznaczne, ale postaram się pomóc.

Jeśli chcesz, aby ten sam wirtualny host nasłuchiwał na wielu portach, wykonaj następujące czynności:

Listen 80
NameVirtualHost *:80

Listen 8080    
NameVirtualHost *:8080

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

Mówiąc ogólnie, nie definiujesz wielu opartych na nazwach VirtualHostów o tej samej nazwie domeny, chyba że musisz użyć innego protokołu.

W przypadku wirtualnych hostów opartych na nazwie SSL należy zachować szczególną ostrożność: z definicji nie może istnieć wiele certyfikatów na tym samym adresie IP: Port, więc aby uniknąć błędów certyfikatów, musiałby to być certyfikat wilcard, obejmujący wszystkie obsługiwane nazwy domen.


źródło
2
+1, ale niewielka korekta: certyfikaty SSL nie są powiązane z adresami IP, ale z nazwami pospolitymi (CN), które muszą być równe nazwie hosta . Również z rozszerzeniem SNI można mieć wiele wirtualnych hostów z różnymi certyfikatami na tym samym adresie IP. ( en.wikipedia.org/wiki/Server_Name_Indication )
Daniel Rikowski
3
+1 również, dla SSL powinien być <VirtualHost *: 80 *: 443>
fedmich