Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
fr:logiciel:internet:apache:vhosts-0 [2021/02/15 12:01] – ↷ Page déplacée de logiciel:internet:apache:vhosts-0 à fr:logiciel:internet:apache:vhosts-0 adminlogiciel:internet:apache:vhosts:start [2022/08/13 22:14] (Version actuelle) – modification externe 127.0.0.1
Ligne 3: Ligne 3:
 Les hôtes virtuels du serveur web Apache permettent d'héberger plusieurs domaines sur la même IP. Le champ //Host:// de la requête HTTP détermine l'hôte virtuel qui devra traiter la requête. Les hôtes virtuels du serveur web Apache permettent d'héberger plusieurs domaines sur la même IP. Le champ //Host:// de la requête HTTP détermine l'hôte virtuel qui devra traiter la requête.
  
-====== Sous-domaines par nom ======+===== Sous-domaines par nom =====
  
 Pour chaque domaine, on crée un fichier /etc/apache2/sites-available/domaineX.com Pour chaque domaine, on crée un fichier /etc/apache2/sites-available/domaineX.com
  
-===== en local : sous-domaines du localhost =====+==== en local : sous-domaines du localhost ====
  
 __Exemple__ : sous-domaine doc.localhost __Exemple__ : sous-domaine doc.localhost
Ligne 43: Ligne 43:
 </file> </file>
  
-===== sur le web : sous-domaines d'un domaine =====+==== sur le web : sous-domaines d'un domaine ====
  
 Pour créer doc.mondomaine.com, sous-domaine de mondomaine.com : Pour créer doc.mondomaine.com, sous-domaine de mondomaine.com :
Ligne 71: Ligne 71:
 #</VirtualHost> #</VirtualHost>
  
-====== Préparation de l'environnement ======+===== Préparation de l'environnement =====
  
 Voici un exemple d'organisation : Voici un exemple d'organisation :
Ligne 96: Ligne 96:
   * www -> racine de l'arborescence web où se trouveront nos pages et scripts éventuels et les sous-domaines (subdir*).   * www -> racine de l'arborescence web où se trouveront nos pages et scripts éventuels et les sous-domaines (subdir*).
  
-====== Configuration du domaine mondomaine.com ======+===== Configuration du domaine mondomaine.com =====
  
 Pour ce domaine, nous créons les 2 configurations suivantes dans le fichier /etc/apache2/sites-available/mondomaine.com. Pour ce domaine, nous créons les 2 configurations suivantes dans le fichier /etc/apache2/sites-available/mondomaine.com.
Ligne 176: Ligne 176:
   /etc/init.d/apache restart   /etc/init.d/apache restart
  
-====== Cas du vhost par défaut ======+===== Cas du vhost par défaut =====
  
 Pour gérer le cas d'une requête à destination d'un domaine qui n'est pas hébergé, un vhost par défaut est défini. Il est défini en premier. Pour gérer le cas d'une requête à destination d'un domaine qui n'est pas hébergé, un vhost par défaut est défini. Il est défini en premier.
Ligne 197: Ligne 197:
   a2ensite 0000-default   a2ensite 0000-default
  
-====== Règles de comportement ======+===== Règles de comportement =====
  
 Nous souhaitons héberger le domaine mondomaine.com. Nous souhaitons héberger le domaine mondomaine.com.
Ligne 207: Ligne 207:
 En ce qui concerne les alias de domaines (différentes extensions tld), il est nécessaire de modifier la configuration du vhost en ajoutant les directives ServerAlias. En effet, les domaines n’apparaissant ni en ServerName, ni en ServerAlias seront traités par le vhost par défaut. En ce qui concerne les alias de domaines (différentes extensions tld), il est nécessaire de modifier la configuration du vhost en ajoutant les directives ServerAlias. En effet, les domaines n’apparaissant ni en ServerName, ni en ServerAlias seront traités par le vhost par défaut.
  
-====== Configuration d'hôtes virtuels sur Apache avec support automatique des sous-domaines, du SSL et de l'authentification ======+===== Configuration d'hôtes virtuels sur Apache avec support automatique des sous-domaines, du SSL et de l'authentification =====
  
-====== Utilisation des virtualhosts ======+===== Utilisation des virtualhosts =====
  
 Les Serveurs Virtuels font fonctionner un ou plusieurs serveurs Web ((comme company1.example.com and company2.example.com)) sur une même machine. Les Serveurs Virtuels font fonctionner un ou plusieurs serveurs Web ((comme company1.example.com and company2.example.com)) sur une même machine.
Ligne 226: Ligne 226:
   * et de configurer le serveur Apache pour qu'il reconnaisse ces domaines   * et de configurer le serveur Apache pour qu'il reconnaisse ces domaines
  
-===== Serveurs Virtuels par-Nom (Un ou plusieurs sites Web par adresse IP) =====+==== Serveurs Virtuels par-Nom (Un ou plusieurs sites Web par adresse IP) ====
  
 Les noms utilisés doivent être définis sur le serveur DNS et être liés à une adresse IP associée au serveur. Les noms utilisés doivent être définis sur le serveur DNS et être liés à une adresse IP associée au serveur.
Ligne 252: Ligne 252:
   ; ServerAlias : autres noms permis pour accéder au même site Web (jokers * et ? autorisés)   ; ServerAlias : autres noms permis pour accéder au même site Web (jokers * et ? autorisés)
  
-====== Génération automatique des domaines : virtualhosts dynamiques ======+===== Génération automatique des domaines : virtualhosts dynamiques =====
  
 La génération automatique des domaines est utile si les <VirtualHost> sont nombreux et sensiblement les mêmes, par exemple : La génération automatique des domaines est utile si les <VirtualHost> sont nombreux et sensiblement les mêmes, par exemple :
Ligne 293: Ligne 293:
   * DocumentRoot   * DocumentRoot
  
-===== Hôtes virtuels dynamiques simples =====+==== Hôtes virtuels dynamiques simples ====
  
 Cet extrait du fichier httpd.conf met en œuvre l'hôte virtuel décrit ci-dessus, mais d'une façon générique à l'aide mod_vhost_alias. Voir aussi une amélioration au paragraphe [[#2.4. Serveur virtuel basé sur l'IP plus efficace]] Cet extrait du fichier httpd.conf met en œuvre l'hôte virtuel décrit ci-dessus, mais d'une façon générique à l'aide mod_vhost_alias. Voir aussi une amélioration au paragraphe [[#2.4. Serveur virtuel basé sur l'IP plus efficace]]
Ligne 312: Ligne 312:
 Le nom du serveur qui est inséré dans le nom de fichier est déduit de l'adresse IP de l'hôte virtuel. Le nom du serveur qui est inséré dans le nom de fichier est déduit de l'adresse IP de l'hôte virtuel.
  
-===== Un serveur de pages d'accueil virtuel =====+==== Un serveur de pages d'accueil virtuel ====
  
 C'est une adaptation du système ci-dessus pour créer des pages d'accueil. Des sous-chaînes du nom du serveur sont utilisées dans le nom du fichier de sorte que, par exemple les documents pour www.user.isp.com se trouvent dans /home/user/. C'est une adaptation du système ci-dessus pour créer des pages d'accueil. Des sous-chaînes du nom du serveur sont utilisées dans le nom du fichier de sorte que, par exemple les documents pour www.user.isp.com se trouvent dans /home/user/.
Ligne 328: Ligne 328:
 </file> </file>
  
-===== Plus d'un serveur virtuel sur le même serveur =====+==== Plus d'un serveur virtuel sur le même serveur ====
  
 Par exemple, une adresse IP pour les pages d'accueil des clients les et un autre pour les commerciaux avec : Par exemple, une adresse IP pour les pages d'accueil des clients les et un autre pour les commerciaux avec :
Ligne 368: Ligne 368:
 <note>Si le premier bloc VirtualHost n'inclut pas une directive ServerName, le reverse DNS de l'adresse IP correspondante sera utilisé à la place. Si ce n'est pas le nom du serveur voulu, une entrée bidon (ServerName none.example.com) peut être ajoutée pour contourner ce comportement.</note> <note>Si le premier bloc VirtualHost n'inclut pas une directive ServerName, le reverse DNS de l'adresse IP correspondante sera utilisé à la place. Si ce n'est pas le nom du serveur voulu, une entrée bidon (ServerName none.example.com) peut être ajoutée pour contourner ce comportement.</note>
  
-===== Serveur virtuel basé sur l'IP plus efficace =====+==== Serveur virtuel basé sur l'IP plus efficace ====
  
 Amélioration du paragraphe [[#2.1. Hôtes virtuels dynamiques simples]]. Pour éviter la recherche DNS pour transformer un nom en une adresse IP, on peut se baser sur les adresses IP elles-mêmes plutôt que sur les noms correspondants. Amélioration du paragraphe [[#2.1. Hôtes virtuels dynamiques simples]]. Pour éviter la recherche DNS pour transformer un nom en une adresse IP, on peut se baser sur les adresses IP elles-mêmes plutôt que sur les noms correspondants.
Ligne 385: Ligne 385:
 </file> </file>
  
-===== Hôtes virtuels dynamiques simples utilisant mod_rewrite =====+==== Hôtes virtuels dynamiques simples utilisant mod_rewrite ====
  
 Cet extrait du fichier httpd.conf fait la même chose que le premier exemple ([[#2.1. Hôtes virtuels dynamiques simples]]). La première moitié est très semblable à la partie correspondante ci-dessus, mais avec quelques changements pour la compatibilité descendante et pour faire fonctionner correctement la partie mod_rewrite, la seconde moitié configure mod_rewrite pour faire le travail. Cet extrait du fichier httpd.conf fait la même chose que le premier exemple ([[#2.1. Hôtes virtuels dynamiques simples]]). La première moitié est très semblable à la partie correspondante ci-dessus, mais avec quelques changements pour la compatibilité descendante et pour faire fonctionner correctement la partie mod_rewrite, la seconde moitié configure mod_rewrite pour faire le travail.
Ligne 427: Ligne 427:
 </file> </file>
  
-===== Un serveur de pages d'accueil en utilisant le mod_rewrite =====+==== Un serveur de pages d'accueil en utilisant le mod_rewrite ====
  
 Ceci fait la même chose que le second exemple ([[#2.2. Un serveur de pages d'accueil virtuel]]). Ceci fait la même chose que le second exemple ([[#2.2. Un serveur de pages d'accueil virtuel]]).
Ligne 453: Ligne 453:
 </file> </file>
  
-==== Utilisation d'un fichier séparé de configuration de l'hôte virtuel ====+=== Utilisation d'un fichier séparé de configuration de l'hôte virtuel ===
  
 Ce dispositif utilise des fonctionnalités plus avancées de mod_rewrite pour lier un hôte virtuel à la racine des documents à partir d'un fichier de configuration séparé. Cela offre plus de souplesse, mais nécessite une configuration plus complexe. Ce dispositif utilise des fonctionnalités plus avancées de mod_rewrite pour lier un hôte virtuel à la racine des documents à partir d'un fichier de configuration séparé. Cela offre plus de souplesse, mais nécessite une configuration plus complexe.
Ligne 490: Ligne 490:
 </file> </file>
  
-===== Références =====+==== Références ====
  
   * [[http://julien-pauli.developpez.com/tutoriels/apache/vhosts/]]   * [[http://julien-pauli.developpez.com/tutoriels/apache/vhosts/]]
Ligne 498: Ligne 498:
   * [[http://hosting-project.thibaudsowa.com/3-configuration-apache]]   * [[http://hosting-project.thibaudsowa.com/3-configuration-apache]]
  
-====== Exemples ======+===== Exemples =====
  
-===== Plusieurs serveurs virtuels par nom sur une seule adresse IP. =====+==== Plusieurs serveurs virtuels par nom sur une seule adresse IP. ====
  
 Votre serveur ne dispose que d'une seule adresse IP, et de nombreux alias (CNAMES) pointent vers cette adresse dans le DNS. Votre serveur ne dispose que d'une seule adresse IP, et de nombreux alias (CNAMES) pointent vers cette adresse dans le DNS.
Ligne 560: Ligne 560:
 En fait, le seul cas où cette configuration ne fonctionne pas est lorsque différents contenus doivent être servis en fonction de l'adresse IP et du port contactés par le client. En fait, le seul cas où cette configuration ne fonctionne pas est lorsque différents contenus doivent être servis en fonction de l'adresse IP et du port contactés par le client.
  
-===== Serveurs virtuels par nom sur plus d'une seule adresse IP =====+==== Serveurs virtuels par nom sur plus d'une seule adresse IP ====
  
 <note>Toutes les techniques présentées ici peuvent être étendues à un plus grand nombre d'adresses IP.</note> <note>Toutes les techniques présentées ici peuvent être étendues à un plus grand nombre d'adresses IP.</note>
Ligne 597: Ligne 597:
 Les requêtes vers 172.20.30.50 avec un nom de serveur inconnu, ou sans en-tête Host:, seront servies par www.example.com. Les requêtes vers 172.20.30.50 avec un nom de serveur inconnu, ou sans en-tête Host:, seront servies par www.example.com.
  
-===== Servir le même contenu sur des adresses IP différentes (telle qu'une adresse interne et une externe) =====+==== Servir le même contenu sur des adresses IP différentes (telle qu'une adresse interne et une externe) ====
  
 La machine serveur dispose de deux adresses IP (192.168.1.1 et 172.20.30.40). La machine serveur dispose de deux adresses IP (192.168.1.1 et 172.20.30.40).
Ligne 624: Ligne 624:
 Notez également que dans l'exemple précédent, vous pouvez remplacer la liste des adresses IP par des * afin que le serveur réponde de la même manière sur toutes ses adresses.</note> Notez également que dans l'exemple précédent, vous pouvez remplacer la liste des adresses IP par des * afin que le serveur réponde de la même manière sur toutes ses adresses.</note>
  
-===== Servir différents sites sur différents ports =====+==== Servir différents sites sur différents ports ====
  
 Vous disposez de plusieurs domaines pointant sur la même adresse IP et vous voulez également servir de multiples ports. Vous disposez de plusieurs domaines pointant sur la même adresse IP et vous voulez également servir de multiples ports.
Ligne 660: Ligne 660:
 </code>  </code> 
  
-===== Hébergement virtuel basé sur IP =====+==== Hébergement virtuel basé sur IP ====
  
 Le serveur dispose de deux adresses IP (172.20.30.40 et 172.20.30.50) correspondant respectivement aux noms www.example.com et www.example.org. Le serveur dispose de deux adresses IP (172.20.30.40 et 172.20.30.50) correspondant respectivement aux noms www.example.com et www.example.org.
Ligne 680: Ligne 680:
 Les requêtes provenant d'adresses non spécifiées dans l'une des directives <VirtualHost> (comme pour localhost par exemple) seront dirigées vers le serveur principal, s'il en existe un. Les requêtes provenant d'adresses non spécifiées dans l'une des directives <VirtualHost> (comme pour localhost par exemple) seront dirigées vers le serveur principal, s'il en existe un.
  
-===== Hébergements virtuels mixtes basés sur les ports et sur les IP =====+==== Hébergements virtuels mixtes basés sur les ports et sur les IP ====
  
 Le serveur dispose de deux adresses IP (172.20.30.40 et 172.20.30.50) correspondant respectivement aux noms www.example.com et www.example.org. Le serveur dispose de deux adresses IP (172.20.30.40 et 172.20.30.50) correspondant respectivement aux noms www.example.com et www.example.org.
Ligne 713: Ligne 713:
 </code>  </code> 
  
-======= Hébergements virtuels mixtes basé sur les noms et sur IP ======+====== Hébergements virtuels mixtes basé sur les noms et sur IP =====
  
 Pour certaines adresses, des serveurs virtuels seront définis par nom, et pour d'autres, ils seront définis par IP. Pour certaines adresses, des serveurs virtuels seront définis par nom, et pour d'autres, ils seront définis par IP.
Ligne 749: Ligne 749:
 </code> </code>
  
-===== Utilisation simultanée de Virtual_host et de mod_proxy =====+==== Utilisation simultanée de Virtual_host et de mod_proxy ====
  
 L'exemple suivant montre comment une machine peut mandater un serveur virtuel fonctionnant sur le serveur d'une autre machine. L'exemple suivant montre comment une machine peut mandater un serveur virtuel fonctionnant sur le serveur d'une autre machine.
Ligne 766: Ligne 766:
 </code> </code>
  
-===== Utilisation de serveurs virtuels _default_ =====+==== Utilisation de serveurs virtuels _default_ ====
  
-==== Serveurs virtuels _default_ pour tous les ports ====+=== Serveurs virtuels _default_ pour tous les ports ===
  
 Exemple de capture de toutes les requêtes émanant d'adresses IP ou de ports non connus, c'est-à-dire, d'un couple adresse/port non traité par aucun autre serveur virtuel. Exemple de capture de toutes les requêtes émanant d'adresses IP ou de ports non connus, c'est-à-dire, d'un couple adresse/port non traité par aucun autre serveur virtuel.
Ligne 786: Ligne 786:
 Vous pouvez utiliser une directive AliasMatch ou RewriteRule afin de réécrire une requête pour une unique page d'information (ou pour un script). Vous pouvez utiliser une directive AliasMatch ou RewriteRule afin de réécrire une requête pour une unique page d'information (ou pour un script).
  
-==== Serveurs virtuels _default_ pour des ports différents ====+=== Serveurs virtuels _default_ pour des ports différents ===
  
 La configuration est similaire à l'exemple précédent, mais le serveur écoute sur plusieurs ports et un second serveur virtuel _default_ pour le port 80 est ajouté. La configuration est similaire à l'exemple précédent, mais le serveur écoute sur plusieurs ports et un second serveur virtuel _default_ pour le port 80 est ajouté.
Ligne 806: Ligne 806:
 Le serveur principal n'est jamais utilisé pour servir une requête. Le serveur principal n'est jamais utilisé pour servir une requête.
  
-==== Serveurs virtuels _default_ pour un seul port ====+=== Serveurs virtuels _default_ pour un seul port ===
  
 Nous voulons créer un serveur virtuel par défaut seulement pour le port 80. Nous voulons créer un serveur virtuel par défaut seulement pour le port 80.
Ligne 819: Ligne 819:
 Une requête vers une adresse non spécifiée sur le port 80 sera servie par le serveur virtuel par défaut, et toute autre requête vers une adresse et un port non spécifiés sera servie par le serveur principal. Une requête vers une adresse non spécifiée sur le port 80 sera servie par le serveur virtuel par défaut, et toute autre requête vers une adresse et un port non spécifiés sera servie par le serveur principal.
  
-==== Migration d'un serveur virtuel par nom en un serveur virtuel par IP ====+=== Migration d'un serveur virtuel par nom en un serveur virtuel par IP ===
  
 Le serveur virtuel par nom avec le nom de domaine www.example.org (de notre exemple par nom) devrait obtenir sa propre adresse IP. Le serveur virtuel par nom avec le nom de domaine www.example.org (de notre exemple par nom) devrait obtenir sa propre adresse IP.
Ligne 850: Ligne 850:
 Le serveur virtuel peut maintenant être joint par la nouvelle adresse (comme un serveur virtuel par IP) et par l'ancienne adresse (comme un serveur virtuel par nom). Le serveur virtuel peut maintenant être joint par la nouvelle adresse (comme un serveur virtuel par IP) et par l'ancienne adresse (comme un serveur virtuel par nom).
  
-==== Utilisation de la directive ServerPath ====+=== Utilisation de la directive ServerPath ===
  
 Dans le cas où vous disposez de deux serveurs virtuels par nom, le client doit transmettre un en-tête Host: correct pour déterminer le serveur concerné. Dans le cas où vous disposez de deux serveurs virtuels par nom, le client doit transmettre un en-tête Host: correct pour déterminer le serveur concerné.
Ligne 898: Ligne 898:
 Les directives RewriteRule sont employées pour s'assurer que le client qui envoie un en-tête Host: correct puisse utiliser d'autres variantes d'URLs, c'est-à-dire avec ou sans préfixe d'URL. Les directives RewriteRule sont employées pour s'assurer que le client qui envoie un en-tête Host: correct puisse utiliser d'autres variantes d'URLs, c'est-à-dire avec ou sans préfixe d'URL.
  
-===== Sous-domaines du site domaine.com (IP=1.2.3.4) =====+==== Sous-domaines du site domaine.com (IP=1.2.3.4) ====
  
 L'ordre a une importance. L'ordre a une importance.
Ligne 1011: Ligne 1011:
   a2enmod vhost_alias   a2enmod vhost_alias
  
-====== Références ======+===== Références =====
  
 [[http://publications.jbfavre.org/web/vhosts-automatiques-avec-SSL-et-authentification|Configuration d'hôtes virtuels sur Apache avec support automatique des sous-domaines, du SSL et de l'authentification]] [[http://publications.jbfavre.org/web/vhosts-automatiques-avec-SSL-et-authentification|Configuration d'hôtes virtuels sur Apache avec support automatique des sous-domaines, du SSL et de l'authentification]]