Déclarer plusieurs ports pour le même VirtualHosts

35

Déclarez plusieurs ports pour les mêmes hôtes virtuels:

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>

Comment déclarer un nouveau port ('listen', ServerName, ...) pour 'domain.localhost'?

Si j'ajoute le code suivant, apache fonctionne (trop) également pour tous les autres sous-domaines de '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>
utilisateur65567
la source
3
Juste pour noter. Vous ne pouvez pas joindre un hôte virtuel https et non-https en un. <VirtualHost *: 80 *: 443>. 80 Impossible d'avoir "SSLEngine on". Vous devez avoir 2 déclarations distinctes VirtualHost pour SSL et non-SSL.
Gacek

Réponses:

63

La question est quelque peu ambiguë, mais je vais essayer de vous aider.

Si vous voulez que le même virtualhost écoute sur plusieurs ports, procédez comme suit:

Listen 80
NameVirtualHost *:80

Listen 8080    
NameVirtualHost *:8080

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

En règle générale, vous ne définissez pas plusieurs hôtes virtuels basés sur le même nom pour le même nom de domaine, sauf si vous devez utiliser un protocole différent.

Pour les hôtes virtuels basés sur un nom SSL, vous devez faire très attention: par définition, il ne peut pas y avoir plusieurs certificats sur la même adresse IP: Port. Par conséquent, pour éviter les erreurs de certificat, il devrait être un certificat wilcard, couvrant tous les noms de domaine desservis.


la source
2
+1 mais une petite correction: les certificats SSL ne sont pas liés à des adresses IP mais à des noms communs (CN) qui doivent correspondre au nom de l' hôte . De plus, avec l'extension SNI, il est possible d'avoir plusieurs hôtes virtuels avec des certificats différents sur la même adresse IP. ( en.wikipedia.org/wiki/Nom_Serveur_Indication )
Daniel Rikowski
3
+1 aussi, pour SSL, cela devrait être <VirtualHost *: 80 *: 443>
fedmich