Apache2 prend en charge la diffusion de contenus différents en fonction des noms de domaine, même si tous ces domaines se résolvent vers la même adresse IP. Chacun des noms de domaine est géré par un hôte virtuel , donc l' hôte virtuel basé sur le nom .
Voici un exemple de configuration pour deux domaines:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.yourfirstdomain.tld
DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>
<VirtualHost *:80>
ServerName www.yourseconddomain.tld
DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>
Vous trouverez la documentation officielle sur la prise en charge d'hôte virtuel basé sur le nom ici .
Cependant, veuillez noter que cela ne fonctionnera qu'avec des connexions HTTP simples, pas avec HTTPS (HTTP sur SSL): les hôtes virtuels basés sur le nom dépendent de savoir quel nom est demandé, mais ces informations ne peuvent pas être connues par Apache jusqu'à ce que le SSL crypté la connexion est établie.
Si vous devez également faire fonctionner votre configuration avec HTTPS, vous devez vous fier à une extension du protocole SSL appelée SNI ( Server Name Indication ) ( RFC4366 ). Fondamentalement, les clients compatibles SNI (ex: navigateurs Web) ajoutent des informations en texte brut supplémentaires lors de l'établissement de la connexion SSL cryptée, permettant au serveur de connaître le nom demandé avant que la connexion SSL ne soit prête.
Tous les navigateurs ne prennent pas encore en charge SNI. Au moment de la rédaction et selon Wikipedia, ceux-ci font:
- Internet Explorer 7 ou version ultérieure, sous Windows Vista ou supérieur (ne fonctionne pas sous XP, même IE 8)
- Mozilla Firefox 2.0 ou version ultérieure
- Opera 8.0 ou version ultérieure (le protocole TLS 1.1 doit être activé)
- Opera Mobile au moins la version 10.1 beta sur Android
- Google Chrome (Vista ou supérieur, XP sur Chrome 6 ou plus récent, OS X 10.5.7 ou supérieur sur Chrome 5.0.342.1 ou plus récent)
- Safari 2.1 ou version ultérieure (Mac OS X 10.5.6 ou supérieur et Windows Vista ou supérieur)
- Konqueror / KDE 4.7 ou version ultérieure
- MobileSafari dans Apple iOS 4.0 ou version ultérieure
- Navigateur Android par défaut sur Honeycomb (v3.x) ou plus récent
- Windows Phone 7
- MicroB sur Maemo
L'hébergement de plusieurs hôtes virtuels basés sur le nom accessibles via HTTPS nécessite d'activer mod_ssl et d'ajouter une configuration similaire à celle de l'exemple ci-dessus:
Listen 443
NameVirtualHost *:443
# Accept connections for these vhosts from non-SNI clients
# Clients without SNI will be handled by the first defined vhost.
# If you only want SNI-enabled client, put on instead
SSLStrictSNIVHostCheck off
<VirtualHost *:443>
ServerName www.yourfirstdomain.tld
DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>
<VirtualHost *:443>
ServerName www.yourseconddomain.tld
DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>
N'oubliez pas que l'utilisation de SSL vous oblige à acheter des certificats SSL pour vos domaines - ou à générer des certificats auto-signés, et à configurer Apache pour les utiliser pour les connexions SSL.