Definition
Le mod_macro d’apache permet de standardisé les virtualhost en permettant l’utilisation de macro ( Fonction / variables ).
Installation
Le mod_macro est un module de base et est installé avec apache.
Pour l’activer éditer le fichier /etc/httpd/conf.modules.d/00-base.conf
Et ajouter la ligne :
LoadModule macro_module modules/mod_macro.so
Recharger apache :
systemctl httpd reload
Configuration
A présent, créez ou ouvrez un fichier conf pour créer ou modifier un virtualhost. Par exemple, /etc/httpd/conf.d/vhosts.conf.
Le principe est simple. Prenez votre virtualhost de base :
<VirtualHost 192.168.0.1:80>
ServerName app1.domaine.fr
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/# Logging
LogLevel warnErrorLog /var/log/httpd/app1.domaine.fr-error_log
CustomLog /var/log/httpd/app1.domaine.fr-access_log combined</VirtualHost>
Imaginons que vous ayez plusieurs applications du même type. Le virtualhost doit être identique pour chaque application. Les seules différences que vous avez sont par exemple le fqdn (app1.domaine.fr) et le port (8080)
Dans ce cas vous pouvez créer un virtualhost générique pour les applications suivantes :
- FQDN : app1.domaine.fr Port : 8080
- FQDN : app2.domaine.fr Port : 8081
- FQDN : app3.domaine.fr Port : 8082
- FQDN : app4.domaine.fr Port : 8083
- FQDN : app5.domaine.fr Port : 8084
Voici ce que ça donnerait :
<Macro VHost $servername $port>
<VirtualHost 192.168.0.1:80>
ServerName $servername
ProxyPass / http://127.0.0.1:$port/
ProxyPassReverse / http://127.0.0.1:$port/# Logging
LogLevel warnErrorLog /var/log/httpd/$servername-error_log
CustomLog /var/log/httpd/$servername-access_log combined</VirtualHost>
</Macro>Use VHost app1.domaine.fr 8080
Use VHost app2.domaine.fr 8081
Use VHost app3.domaine.fr 8082
Use VHost app4.domaine.fr 8083
Use VHost app5.domaine.fr 8084
Ici nous avons créé une macro (Fonction entre les deux balises Macro) qui utilise deux variables $port et $servername. Les valeurs seront automatiquement remplis au démarrage d’apache avec les valeurs définis par Use VHost.
Important : La Macro doit être défini avant de l’utiliser. C’est à dire au dessus du Use.
Pensez à redémarrer apache puis testez.
D’un point de vue administration je trouve ça vraiment pratique.
A vous de jouer