LINUX:HTTP - Paramétrage des machines virtuelles, port HTTP
But
En premier lieu, on va paramétrer les diverses machines virtuelles pour le port HTTP, c'est à dire le n° 80. Toutes vont se ressembler car toute requête sur le port HTTP sera réécrite pour utiliser le port HTTPS.
Organisation
Nous allons créer un fichier de paramétrage par machine virtuelle et par adresse IP.
Ces fichiers seront placés dans un nouveau répertoire que l'on nommera "/etc/httpd/conf.hosts.d".
Pour qu'ils soient intégrés dans la configuration d'Apache, on ajoute à la suite du fichier "/etc/httpd/conf/httpd.conf", la ligne suivante:
Include /etc/httpd/conf.hosts.d/*.conf
Ainsi si on ajoute ou retire une machine virtuelle, il suffit de créer ou détruire le fichier correspondant à notre machine virtuelle et ensuite de recharger la configuration d'Apache.
Machines virtuelles publiques
Nous allons prendre un premier cas, la machine virtuelle "www.adbweb.gslb.eu". Voici le contenu du fichier qu'on pourrait nommer "host-www-gslb.conf":
<VirtualHost *:80> ServerName www.adbweb.gslb.eu RewriteEngine on RewriteRule ^ https://www.adbweb.gslb.eu%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
On remarque les paramètres suivants:
- <VirtualHost *:80> : début de la section "VirtualHost" qui concerne toute adresse IP pour le port 80 (HTTP).
- ServerName : définit le nom de la machine virtuelle concernée.
- RewriteEngine on : on active le module de réécriture.
- RewriteRule : on réécrit la requête vers une équivalente mais de type HTTPS de façon permanente.
- </VirtualHost> : clôture de la section "VirtualHost".
Le début de la requête http://www.adbweb.gslb.eu/ sera réécrite en https://www.adbweb.gslb.eu/.
Voici les autres sur le même schéma pour les différentes autres machines virtuelles:
- la machine virtuelle "adbweb.gslb.eu" (fichier "host-gslb.conf")
<VirtualHost *:80> ServerName adbweb.gslb.eu RewriteEngine on RewriteRule ^ https://adbweb.gslb.eu%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
- la machine virtuelle "archive.laplanchedenvol.be" (fichier "host-abeille.conf")
<VirtualHost *:80> ServerName archive.laplanchedenvol.be RewriteEngine on RewriteRule ^ https://archive.laplanchedenvol.be%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
- la machine virtuelle "laplanchedenvol.be" (fichier "host-asbl.conf")
<VirtualHost *:80> ServerName laplanchedenvol.be RewriteEngine on RewriteRule ^ https://laplanchedenvol.be%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
Machine "localhost"
On aborde la machine "localhost" de façon un peut différente car elle n'est utilisée que via l'adresse IP "127.0.0.1":
On nommera ce fichier "host-localhost.conf" dont voici le contenu:
<VirtualHost 127.0.0.1:80> ServerName localhost ServerAlias 127.0.0.1 RewriteEngine on RewriteRule ^ https://localhost%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
On remarque les options suivantes:
- <VirtualHost 127.0.0.1:80> : qui restreint le traitement à l'adresse IP "127.0.0.1".
- ServerAlias 127.0.0.1 : on ajoute à la machine "localhost", un alias qui reprend son adresse IP. Cette section traitera donc deux "machines": "localhost" et "127.0.0.1".
Machines virtuelles locales
Cette configuration concerne notre machine locale "serverdb.home.dom" et ses alias "serverdb" et "www.home.dom" (fichier "host-serverdb.conf"):
<VirtualHost *:80> ServerName serverdb.home.dom ServerAlias serverdb www.home.dom RewriteEngine on RewriteRule ^ https://serverdb.home.dom%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
Adresse IP vers le LAN privé
Toute adressage IP public est transformé dans notre LAN privé selon l'adresse IP privée de notre serveur "192.168.1.100".
Nous la traitons aussi comme une machine virtuelle séparée (fichier "host-ip.conf"):
<VirtualHost *:80> ServerName 192.168.1.100 RewriteEngine on RewriteRule ^ https://192.168.1.100%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
Notons que les deux derniers points auraient pu être rassemblés mais par souci de parallélisme avec le traitement spécifique pour le protocole HTTPS, nous avons préféré les laissés séparés.
Affichage des machines virtuelles du port HTTP
Quand la configuration complète sera faite (HTTPS compris), on peut exécuter la commande suivante:
httpd -D DUMP_VHOSTS
qui donnera pour cette partie:
VirtualHost configuration: 127.0.0.1:80 localhost (/etc/httpd/conf.hosts.d/host-localhost.conf:1) *:80 is a NameVirtualHost default server archive.laplanchedenvol.be (/etc/httpd/conf.hosts.d/host-abeille.conf:1) port 80 namevhost archive.laplanchedenvol.be (/etc/httpd/conf.hosts.d/host-abeille.conf:1) port 80 namevhost laplanchedenvol.be (/etc/httpd/conf.hosts.d/host-asbl.conf:1) port 80 namevhost adbweb.gslb.eu (/etc/httpd/conf.hosts.d/host-gslb.conf:1) port 80 namevhost 192.168.1.100 (/etc/httpd/conf.hosts.d/host-ip.conf:1) port 80 namevhost serverdb.home.dom (/etc/httpd/conf.hosts.d/host-serverdb.conf:1) alias serverdb alias www.home.dom port 80 namevhost www.adbweb.gslb.eu (/etc/httpd/conf.hosts.d/host-www-gslb.conf:1)
On remarque en quatrième ligne, la configuration par défaut. Elle est celle de la machine virtuelle "archive.laplanchedenvol.be". Cette configuration est prise par défaut car elle est la première rencontrée selon l'ordre alphabétique des fichiers de paramétrage. Dans le cas d'une requête HTTP pour une machine virtuelle non listée, c'est le défaut qui sera pris en compte. Si on veut en mettre une autre, il suffit de changer le nom du fichier. Par exemple, on le fait précéder de "00-". Cette pratique a déjà été rencontrée pour le paramétrage des modules.
On remarque également la mise à part de la machine "localhost" suite à la restriction à une adresse IP particulière.