SucheBlog abonnierenVerwaltung des BlogsKategorienKontaktMarkus Brückner |
Sonntag, 8. Mai 2005Apache2 und name-based Virtual Hosts auf die Spitze getriebenDer Apache Webserver bietet mittels <VirtualHost> eine einfache Möglichkeit, mehrere Webseiten auf einer IP-Adresse anhand des Host:-Headers des HTTP-Requests zu unterscheiden. Damit kann man unter anderem auch solche Sachen realisieren, wie bei Sourceforge die URL der Form projektname.sourceforge.net. Dazu muss man allerdings für jeden Projektnamen einen eigenen VirtualHost-Abschnitt in der Webserverkonfiguration anlegen und den Server dann neu starten. Das ist meistens unerwünscht. Daher gibt es für den Apache ein Modul namens mod_vhost_alias, mit dem man auf einfache Art und Weise Teile des im Host:-Header angegebenen Namens auf Pfade im Dateisystem abbilden kann. Nähere Informationen dazu gibt die mod_vhost_alias Dokumentation. Nun ist es manchmal wünschenswert, beide Sachen miteinander zu mischen, um einerseits bestimmte Konfigurationen für einzelne VirtualHosts vorgeben zu können, andererseits aber bequem viele Subdomains unterhalb einer Domain anlegen zu können. Zweck der Aktion ist eine ähnliche Struktur, wie die bereits erwähnte von Sourceforge: unterhalb der Domain dev.example.com sollen Namen der Form projektname.dev.example.com angelegt werden können, ohne den Webserver neu starten zu müssen. Dabei ist zu beachten, daß dev.example.com ebenfalls nur als VirtualHost vorliegen kann, da auf der selben IP noch weitere Seiten gehostet werden sollen. Zuerst legt man für dev.example.com einen <VirtualHost>-Eintrag in der Apache-Konfiguration an. Darin setzt man den ServerName auf dev.example.com, und zusätzlich den ServerAlias auf *.dev.example.com. Nun wird der Apache alle Requests, die an irgendetwas unterhalb von dev.example.com gehen, an diesen VirtualHost weiterleiten. Nun kann man das nutzen um die einzelnen Servernamen der Form projektname.dev.example.com umzuschreiben auf den Pfad /var/www/dev.example.com/projektname/htdocs. Aktiviert man zuerst das Modul mod_vhost_alias in der Apache-Konfiguration. Informationen dazu gibt die Apache Doku. Danach entfernt man die DocumentRoot des eingerichteten VirtualHost und ersetzt sie durch folgende Zeilen: UseCanonicalName Off VirtualDocumentRoot /var/www/dev.example.com/%1/htdocs Das %1 in der VirtualDocumentRoot steht für den ersten Teil des angeforderten Hostnamens (also bei projektname.dev.example.com der projektname-Teil). Danach kann man weitere URLs der Form projektname.dev.example.com einfach angelegt werden, indem man sie in den DNS einträgt (oder durch einen Catchall erschlägt) und die passenden Verzeichnisse unterhalb von /var/www/dev.example.com anlegt.
(Seite 1 von 1, insgesamt 1 Einträge)
|