Name Based Virtualhosts mit Apache
Das ist ein NameVirtualHosts-HowTo. Verwendet wird www/apache2, es sollte aber auch mit www/apache13 funktionieren.
Was sind Name Based Virtualhosts (NBV)?
NBVs sind "virtuelle" Hosts die ueber ihren DNS-Namen addressiert werden. Zur Verdeutlichung ist es hilfreich ein bisschen HTTP zu verstehen. Wenn man z. B. http://www.example.com/ in seinen Browser eintippt, passiert folgendes:
Der Browser loest den Namen "www.example.com" zu einer IP-Adresse auf
www.example.com has address 192.0.34.166
Dann stellt er eine TCP Verbindung mit 192.0.34.166 auf Port 80 her, und setzt seinen Request ab, der bei HTTP/1.1 so aussieht:
GET / HTTP/1.1 Host: www.example.com
Die Host-Zeile ist der Knackpunkt, darauf reagieren NBVs.
In der httpd.conf gibt man innerhalb der <VirtualHost>-Direktiven mit Hilfe der ServerName- und ServerAlias-Direktiven an, auf welche Host-Zeilen, dieser virtuelle Host zu hoeren hat.
Der Vorteil von NBVs ist, dass man IP-Adressen spart. Man kann nun viele Hostnamen auf eine einzige IP zeigen lassen (meist mit Hilfe von CNAMEs), und mehrere "virtuelle" Webserver auf dieser einen IP aufsetzen.
Apache-Konfiguration
Zuerst muss man dem apache sagen, auf welchen IPs und evtl. auch den dazugehoerigen Ports, man NBVs aktivieren will. Ein * aktiviert das fuer alle IPs.
NameVirtualHost * ServerName www.example.com DocumentRoot /home/apache/www.example.com/www
ServerName und DocumentRoot sind in der Coreconfig, weil www.example.comder default Virtualhost sein soll. Dafuer muss man einen <VirtualHost> anlegen, mit gleichem ServerName und DocumentRoot
<VirtualHost *> ServerName www.example.com DocumentRoot /home/apache/www.example.com/www </VirtualHost>
Hier ist wichtig, dass dieser VirtualHost-Block der erste sein muss, umdieses Fallback zu aktivieren. Jetzt kann man noch ein paar weitere VirtualHosts anlegen
<VirtualHost *> ServerName www1.example.com DocumentRoot /home/apache/www.example.com/www1 </VirtualHost> <VirtualHost *> ServerName www2.example.com DocumentRoot /home/apache/www.example.com/www2 </VirtualHost> <VirtualHost *> ServerName www3.example.com DocumentRoot /home/apache/www.example.com/www3 </VirtualHost>
Sollte www4.example.com auch auf die gleiche IP zeigen, wird es genausobehandelt wie www.example.com. Man kann zum Beispiel den Default auf notconfigured.example.com setzen, dieser VirtualHost liefert dann nur eine Seite in der steht, dass dieser VirtualHost nicht konfiguriert ist.

