Warum können virtuelle Webserver über den Namen unterschieden werden?
Zur Navigation springen
Zur Suche springen
Funktionsweise
- Virtuelle Webserver werden durch den Host-Header in der HTTP-Anfrage unterschieden.
- Der Client sendet beim Webseitenaufruf den Domainnamen im Header mit.
- Apache liest diesen Host-Header und leitet die Anfrage zum passenden VirtualHost weiter.
- Mehrere Domains können so über eine einzige IP-Adresse verwaltet werden.
Beispiel einer Anfrage
Wenn ein Browser eine Webseite aufruft, sendet er folgende HTTP-Anfrage:
GET /index.html HTTP/1.1 Host: www.example.com
Apache prüft den Host:-Eintrag und sucht nach einem passenden VirtualHost:
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/example
</VirtualHost>
<VirtualHost *:80>
ServerName www.test.com
DocumentRoot /var/www/test
</VirtualHost>
Je nach Domain wird entweder /var/www/example/ oder /var/www/test/ ausgeliefert.
Warum funktioniert das auch mit HTTPS?
- HTTPS verschlüsselt die Kommunikation zwischen Client und Server.
- Dennoch muss der Server wissen, welches Zertifikat er für eine Domain verwenden soll.
- Dies geschieht über SNI (Server Name Indication), eine Erweiterung von TLS.
- Der Client sendet den Hostnamen bereits unverschlüsselt im TLS-Handshake.
- Apache nutzt diesen Hostnamen, um das richtige Zertifikat auszuwählen.
Vorteile von Named-Based VirtualHosts
- Mehrere Domains auf einer einzigen IP-Adresse möglich.
- Keine zusätzliche Netzwerkkonfiguration nötig.
- Geringerer Ressourcenverbrauch als separate IP-Adressen pro Webseite.
- Funktioniert mit HTTP und HTTPS durch SNI-Unterstützung.