Tools

Standardisierung für den Apache httpd mit mod_macro

Überblick

In vielen Web-Umgebungen, die auf den Apache Webserver (httpd) setzen, lässt sich ein ständiges Wachstum der Komplexität verzeichnen. Das liegt jedoch oft nicht daran dass die Konfiguration an sich komplex ist, sondern dass oftmals viele vHosts existieren, die dem verantwortlichen Administrator die Übersicht nehmen. Mittlerweile häufig gesehen ist das Verwalten der vHost-Konfigurationen in eigenen Dateien:

Das Anlegen einer solchen Struktur ist in dem Fall sehr sinnvoll und übersichtlich, ab einer gewissen Größe ist es jedoch eine Zumutung, wenn z.B. aufgrund von Sicherheitslücken die entsprechenden Gegenmaßnahmen in jedem vHost, und damit jeder Datei, umgesetzt werden müssen. In diesem Fall helfen nur kleine, intelligente Skripte oder ein vorhandenes Konfigurationsmanagementtool. Wenn das eine zu aufwendig bzw. fehleranfällig und das andere für die Umgebung übertrieben erscheint, ist vielleicht mod_macro die Lösung!

Das Modul mod_macro, welches in httpd 2.2 nur als Third-Party-plugin existierte und in httpd 2.4.6 nun fester Bestandteil ist, bietet Möglichkeiten um einmal definierte Konfigurationsabschnitte, in einer Art ähnlich einem Funktionsaufruf in der Programmierung, wieder zu verwenden und dabei mit dynamisch festgelegten Werten zu füttern. In der Praxis sähe das etwa so aus:

Dieser Abschnitt dient dazu ein Template für vHosts zu definieren.

Damit wäre das Template definiert, die entsprechenden Direktiven für die Konfiguration der gewünschten vHosts sind folgende.

Wenn beispielsweise der Kunde für jedes seiner Gewinnspiele eine Website unter einer eigens dafür registrierten Domain veröffentlichen möchte, muss nur noch das entsprechende Webverzeichnis angelegt und ein neuer vHost hinzugefügt werden. Änderungen an dem Template-vHost betreffen nun auch alle vererbten vHosts.

Installation

Apache httpd 2.2 und <2.4.6

Da mod_macro in der Version 2.2 noch nicht integriert ist, muss das Plugin selbst kompiliert und als Modul eingerichtet werden. Da dies für produktive Systeme eher ungeeignet ist, wird auf eine weitere Beschreibung verzichtet, zumal die folgende offizielle Dokumentation alle wichtigen Schritte beschreibt:

https://people.apache.org/~fabien/mod_macro/

Apache httpd 2.4.6

In der httpd-Version 2.4.6 wurde mod_macro erstmals nativ eingeführt. Das jeweilige Plugin muss nur noch in der Konfiguration eingebunden werden.

Konfiguration

Als Vorlage für die Konfiguration kann das unter “Überblick” gezeigte Template verwendet werden. Dies kann in einer eigenen Konfigurationsdatei liegen, welche in der httpd.conf eingebunden (Include/IncludeOptional) wird. Genauso wie die Konfiguration mit den Use-Kommandos; wichtig ist nur, dass von der Reihenfolge her zuerst das Macro definiert wird, bevor ein Use darauf verweisen kann.

Weiterführende Dokumentation zur Nutzung und Konfiguration von mod_macro findet sich hier:

http://httpd.apache.org/docs/current/mod/mod_macro.html

Weiterführendes

Mit mod_macro lassen sich viele Szenarien vereinfachen in welchen Konfigurationsstücke immer wieder verwendet werden. Ein einmal definiertes Macro kann mit UndefMacro wieder undeklariert werden, damit es sich mit der weiteren Konfiguration nicht überschneidet. Es sollten jedoch generell eindeutige Bezeichner genutzt werden die dies verhindern.

Zu beachten ist, dass die Makros jeweils nur zum Start der httpd-Instanz geladen werden, weshalb die dort genutzten Direktiven die Perfomance des Webservers in der Laufzeit im Prinzip nicht beeinflussen. Anders als beispielsweise die If-Direktiven, welche jeweils bei jedem eingehenden Request geprüft werden.

Schreibe einen Kommentar

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