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:

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.


KategorieTutorial

Apache/NameVirtualHost (last edited 2008-07-14 09:55:43 by localhost)