mod_macro mit Apache 2.4

mod_macro ist dufte, besonders wenn man nicht nur Apache Vhosts für 10-20 Leute verwaltet.  Da gibt es etliche sinnvolle Einsätze für.

Das Modul mod_macro ist default bei apache 2.4 dabei.

$a2enmod macro

Nun kann man sich eine einfache macro.conf anlegen:

<Macro VHost $name $domain>
<VirtualHost *:80>
    ServerName $domain
    ServerAlias www.$domain
    DocumentRoot "/var/www/vhosts/$name"
    ErrorLog "/var/log/httpd/$name.error_log"
    CustomLog "/var/log/httpd/$name.access_log" combined
</VirtualHost>
</Macro>

Wir haben damit ein Macro namens VHost angelegt. Dieses Macro kann mit folgenden Werten gefüttert werden:

$name $domain

Wollen wir das Nacro nun in unserer vhost.conf nutzen, schreiben wir dort einfach nur:

Use VHost example example.com
...
Use VHost montag baldistfruehling.org

Wir übergeben also den Wert example und example.com an das Macro mit dem Namen VHost. Dabei ist die Reihenfolge der Werte durch das Macro vorgegeben. Der Apache baut uns damit unsere Vhost.conf zusammen.

Fertig  sind unsere Vhosts. Einfach den Apache neu starten und das war es.  In der Dokumentation wird aus verständlichen Gründen noch vorgeschlagen die Macro Definition wieder zu entfernen wenn sie nicht mehr gebraucht wird.
Dies geschieht einfach  mit

UndefMacro VHost

Besonders bei größere Konfigurationen, vermeidet man damit Konflikte.

Will man mehrere Werte übergeben z. B.  IP Listen, kann man einfach diese einfach in Anführungszeichen setzen.

Use RestrictedAccessPolicy "192.54.172.0/24 192.54.148.0/24"

Hinweise:

Die macro.conf kann natürlich in beliebig viele Dateien auf gesplittet werden. Optimalerweise sollten die Namen der Macro Dateien Aufschluss über deren Funktion geben.  Das Include  der macro.conf muss vor dem Include der vhost.conf stehen.

Eine Dokumentation zu mod_macro findet man unter

https://httpd.apache.org/docs/2.4/mod/mod_macro.html

Die ist sehr gut, daher habe ich auch auf eigene Beispiele verzichtet.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.