« Httpd vhost » : différence entre les versions
Autres actions
mAucun résumé des modifications |
|||
| Ligne 142 : | Ligne 142 : | ||
L'expression suivante va réévaluer toutes les URLs se terminant (''$'') par ''favicon.ico'' en ''/chemin/vers/favicon.ico''. | L'expression suivante va réévaluer toutes les URLs se terminant (''$'') par ''favicon.ico'' en ''/chemin/vers/favicon.ico''. | ||
=== Favicon pas dans | === Favicon pas dans le DocumentRoot === | ||
Si votre ''favicon'' n'est pas dans | Si votre ''favicon'' n'est pas dans le ''DocumentRoot'' (directive d'Apache) de votre site web, il faudra la rendre exécutable pour qu'Apache puisse la servir | ||
<pre> | <pre> | ||
# chmod +x /chemin/vers/favicon.ico | # chmod +x /chemin/vers/favicon.ico | ||
</pre> | </pre> | ||
Dernière version du 31 mai 2026 à 11:25
Assurez-vous d'avoir correctement configuré votre serveur Apache httpd avant d'aller plus loin !
Pour quoi faire ?
La fonction Vhost permet de faire tourner plusieurs sites Web différents sur un même serveur. Les moyens de différenciation sont multiples:
- le port TCP
- l'adresse IP
- le nom DNS
- un sous-ensemble de ces trois éléments
Emplacement du fichier de configuration
Les fichiers de configuration de httpd se trouvent dans le dossier /etc/httpd/conf.d
# ll /etc/httpd/conf.d/ total 20 -rw-r--r--. 1 root root 392 13 août 19:28 README -rw-r--r--. 1 root root 9473 2 août 13:59 ssl.conf -rw-r--r--. 1 root root 299 2 août 13:59 welcome.conf
Ces fichiers sont importés dans la configuration de httpd grâce à la directive Include présente dans le fichier httpd.conf
Include conf.d/*.conf
Nous allons donc créer un fichier spécifique pour nos VHost que nous appellerons vhost.conf
# touch /etc/httpd/conf.d/vhost.conf
VHost par ports TCP
Ce choix permet avec une seule adresse IP d'avoir plusieurs sites qui sont accessibles sur des ports différents. C'est généralement le cas quand on veut installer des interfaces d'administration.
Tout d'abord le serveur httpd doit écouter sur les ports en question
Listen 80 # Ne pas ajouter si déjà dans httpd.conf Listen 8080 ServerName www.tala-informatique.fr
Ensuite les VHost possèderont une directive VirtualHost différente
<VirtualHost *:80>
DocumentRoot /var/www/html/public
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot /var/www/html/admin
</VirtualHost>
VHost par adresses IP
Des contenus différents
Ce choix est inintéressant quand le serveur Web possède deux cartes réseaux sur deux réseaux différents (vers Internet et vers l'intranet).
Tout d'abord on déclare un serveur httpd principal et cette configuration est généralement déjà dans httpd.conf.
Listen 192.168.200.251:80 DocumentRoot /var/www/html/ ServerName www.tala-informatique.fr
Ensuite le VHost possèdera une directive VirtualHost différente
<VirtualHost 192.168.200.250:80>
DocumentRoot /var/www/html/intranet
</VirtualHost>
Le même contenu
Le serveur web peut avoir plusieurs interfaces, sur des réseaux différents, et en plus une interface d'administration sur laquelle on ne veut pas que httpd écoute.
Tout d'abord le serveur httpd doit écouter sur le port TCP/80 (en général)
Listen *:80
Puis on précise les interfaces d'écoute
<VirtualHost 192.168.200.250 192.168.200.251>
DocumentRoot /var/www/html/intranet
ServerName www.tala-informatique.fr
</VirtualHost>
VHost par noms DNS
C'est le type le plus courant de VHost, le plus souvent les gens ne possèdent qu'une seule adresse IP publique et il est donc plus simple de faire pointer plusieurs noms de domaine vers la même adresse.
La directive NameVirtualHost permet de spécifier l'adresse IP sur laquelle le serveur recevra les requêtes pour les vhosts par nom. Si vous avez plusieurs serveurs virtuels basés sur le nom avec plusieurs adresses, utilisez une directive pour chaque adresse.
NameVirtualHost *:80
Ensuite les VHost possèderont une variable ServerName différente
<VirtualHost *:80>
DocumentRoot /var/www/html/informatique
ServerName www.tala-informatique.fr
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/wiki
ServerName wiki.tala-informatique.fr
</VirtualHost>
favicon.ico ??
Quand on parcourt le fichier access_log on peut croiser la ligne suivante
192.168.200.12 - - [28/Dec/2013:19:58:13 +0100] "GET /favicon.ico HTTP/1.1" 404 278 "-" "Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Firefox/24.0"
Et on peut se demander pourquoi le navigateur demande favicon.ico ?? En fait, il s'agit de l'icône qui figure dans l'onglet, à côté du titre
Vous pouvez la générer grâce au site suivant www.favicon.cc et la placer à la racine du site web (/var/www/html)
Plusieurs Vhosts et une seule favicon
Si vous désirez une favicon pour plusieurs vhost, utilisez une expression rationnelle:
AliasMatch "favicon.ico$" "/chemin/vers/favicon.ico"
L'expression suivante va réévaluer toutes les URLs se terminant ($) par favicon.ico en /chemin/vers/favicon.ico.
Favicon pas dans le DocumentRoot
Si votre favicon n'est pas dans le DocumentRoot (directive d'Apache) de votre site web, il faudra la rendre exécutable pour qu'Apache puisse la servir
# chmod +x /chemin/vers/favicon.ico