Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

Httpd vhost

De The Linux Craftsman
Version datée du 31 mai 2026 à 11:22 par Jc.forton (discussion | contributions) (Page créée avec « = Fonction Virtual Host = 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'' <pre> # ll /etc/httpd/conf.d/ total 20 -rw-r--r--. 1 root root 392 13... »)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)

Fonction Virtual Host

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 la DocumentRoot

Si votre favicon n'est pas dans la 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