4.4. Virtuelle Server einrichten

4.4. Virtuelle Server einrichten

In diesem Abschnitt lernen Sie,

  • was virtuelle Server sind,
  • was der Unterschied zwischen namensbasierten und IP-basierten virtuellen Servern ist und
  • wie Sie virtuelle Server einrichten können.
Zusammenfassung:

Mit dem Apache-Webserver können mehrere "Virtuelle Server" gleichzeitig verwaltet werden. Dabei wird zwischen IP-basierten und namensbasierten virtuellen Servern unterschieden.

Der Apache-Webserver ist in der Lage, gleichzeitig unter mehreren Hostnamen "Virtuelle Server" zu verwalten. Dadurch werden vor allem Kosten gespart, denn es wäre sicherlich nicht besonders sinnvoll, für jede Webpräsenz einen eigenen Rechner mit separat konfiguriertem Webserver zur Verfügung zu stellen. Praktisch bedeutet dies, dass beispielsweise die Präsenzen www.example.com und www.example.org auf demselben physischen Webserver untergebracht sein können.

Virtuelle Server werden in zwei Kategorien unterteilt:

  • IP-basierte virtuelle Server
  • Namensbasierte virtuelle Server

IP-basierte virtuelle Server

Steht für den Webserver in jeder Domain eine eigene IP-Adresse zur Verfügung, können IP-basierte virtuelle Server eingerichtet werden. Der Vorteil dieser Lösung besteht darin, dass sie zu allen Webclients voll kompatibel ist. Nachteilig ist, dass pro Domain eine eigene IP-Adresse belegt wird. Weiterhin muss der Serverrechner IP-Aliasing unterstützen und das Netz entsprechend konfiguriert werden.

Für jeden einzurichtenden virtuellen Server können separate Einstellungen festgelegt werden. Dies geschieht – ähnlich wie bei Konfigurationen für bestimmte Verzeichnisse und Dateien – durch Tags. Zwischen diesen Tags stehen die Konfigurationsanweisungen, die schon im Abschnitt 4.2. behandelt wurden, beispielsweise

<VirtualHost 192.168.0.32>
   ServerName www.example.com
   DocumentRoot /web/dotcom/htdocs
   ServerAdmin webmaster@example.com
</VirtualHost>

<VirtualHost 192.168.0.33>
   ServerName www.example.org
   DocumentRoot /web/dotorg/htdocs
   ServerAdmin webmaster@example.org
</VirtualHost>

Diese Anweisungen richten zwei virtuelle Server ein. Mit ServerName werden den IP-Adressen die passenden Rechnernamen zugewiesen.


Namensbasierte virtuelle Server

Bei namensbasierten virtuellen Servern ist es möglich, verschiedene virtuelle Server über eine IP-Adresse zu betreiben. Dem Serverrechner braucht somit nur eine IP-Adresse zugewiesen zu werden. Richtet ein Webclient eine Anfrage an einen der virtuellen Server, muss er auch Informationen über den Servernamen (HTTP-Header Host) übergeben, damit der Apache-Webserver erkennen kann, von welchem virtuellen Server die Anforderung bedient werden soll.
Dieser HTTP-Header wurde erst mit HTTP/1.1 eingeführt, wird aber von den meisten neueren Browsern auch in HTTP/1.0 mitgesendet.
Sehr alte Browsertypen können aber aus diesem Grund namensbasierte virtuelle Server nicht nutzen. Auch SSL (siehe Lerneinheit 14: Sicherer Webserver) unterstützt keine namensbasierten virtuellen Server, weil der SSL-Handshake (der Zeitpunkt, wenn der Browser das Authentisierungszertifikat des Secure Webservers annimmt) vor der HTTP-Anforderung stattfindet, die den richtigen namensbasierten virtuellen Server identifiziert.

Die Konfiguration namensbasierter virtueller Server ist fast identisch mit der IP-basierter virtueller Server. Allerdings muss zuerst mit der Anweisung NameVirtualHost dem Apache-Webserver mitgeteilt werden, auf welcher IP-Adresse Anforderungen an die virtuellen Server empfangen werden. Beispielsweise:

NameVirtualHost 192.168.0.24

Anschließend können für jeden virtuellen Server separate Einstellungen festgelegt werden:

<VirtualHost 192.168.0.24>
   ServerName www.example.com
   DocumentRoot /web/dotcom/htdocs
   ServerAdmin webmaster@example.com
</VirtualHost>

<VirtualHost 192.168.0.24>
   ServerName www.example.org
   DocumentRoot /web/dotorg/htdocs
   ServerAdmin webmaster@example.org
</VirtualHost>

Im obigen Beispiel werden wieder zwei virtuelle Webserver www.example.com und www.example.org eingerichtet, die aber in diesem Fall auf einem Serverrechner mit nur einer IP-Adresse betrieben werden.
Greift ein Webbrowser beispielsweise auf die Domain www.example.org zu, so hat der HTTP-Header Host den Wert www.example.org. Daran erkennt der Apache-Webserver, dass er die Daten aus dem entsprechenden Document-Root-Verzeichnis /web/dotorg/htdocs zu liefern hat.

Spricht dagegen ein Client die IP-Adresse direkt an, würden die Daten des angeforderten Verzeichnisses unterhalb der Document-Root des Hauptservers zurückgegeben werden.

Es ist auch möglich, einem bestimmten virtuellen Server mit der Anweisung ServerAlias mehr als einen Rechnernamen zuzuweisen. Sollen beispielsweise für die Domains www.example.org und www.example.net die gleichen Inhalte angezeigt werden, sähe die Konfiguration folgendermaßen aus:

<VirtualHost 192.168.0.24>
   ServerName www.example.org
   ServerName www.example.net
   DocumentRoot /web/dotcom/htdocs
   ServerAdmin webmaster@example.org
</VirtualHost>

Die Möglichkeiten zur Konfiguration von virtuellen Servern sind sehr vielfältig. Daher sei auch an dieser Stelle auf die weiterführende Literatur verwiesen, beispielsweise auf die offizielle Apache-Dokumentation unter http://www.apache.org/docs/vhosts/.