Ein Virtual Host ist die Konfiguration, mit der ein Webserver mehrere Websites unter derselben Adresse auseinanderhält. Jede Website bekommt einen eigenen Abschnitt mit ihrem Namen, ihrem Verzeichnis und ihrem Zertifikat.
- Virtual Host
Die Konfiguration, mit der ein Webserver mehrere Websites unter einer Adresse auseinanderhält.
Beispiel: „Für die neue Domain kam ein eigener Virtual Host dazu, das Zertifikat steht darin.“Auch: vHost, virtueller Host, Serverblock. Bei nginx heißt der Abschnitt
server, bei ApacheVirtualHost.Abgrenzung zur Virtualisierung: Dort wird eine Maschine aufgeteilt. Hier bleibt es ein Betriebssystem und ein Webserver, der mehrere Namen bedient.
server {
server_name beispiel.de www.beispiel.de;
root /var/www/beispiel/public;
listen 443 ssl;
}Wie der Server den richtigen Virtual Host findet
Über den Namen, den der Browser mitschickt. Er steht im Host-Feld der Anfrage, und der Webserver sucht den Abschnitt, der dazu passt.
Bei verschlüsselten Verbindungen steht derselbe Name schon im Verbindungsaufbau, damit das passende Zertifikat ausgeliefert werden kann. Dieses Verfahren heißt SNI und ist der Grund, warum heute viele Domains mit eigenem Zertifikat auf einer Adresse liegen können.
Was im Virtual Host außer dem Namen steht
Das DocumentRoot, der Pfad zum Zertifikat, die Protokolldateien dieser Website und die Übergabe an PHP. Dazu Weiterleitungen und, wenn nötig, Rewrite Rules.
Gewohnheit ist eine Datei je Website. So lässt sich eine Website abschalten, ohne die anderen anzufassen, und ein Fehler darin bleibt auf sie begrenzt.
Woran ein falscher Virtual Host zu erkennen ist
Daran, dass eine fremde Website erscheint. Passt kein Abschnitt zum angefragten Namen, liefert der Webserver den ersten aus, und das ist dann irgendein anderes Projekt.
Derselbe Fehler trifft das Zertifikat: Fehlt der Name in einem Abschnitt, antwortet der Server mit dem Zertifikat des Nachbarn, und der Browser warnt, obwohl ein gültiges Zertifikat vorliegt.