Apache2 unterstützt die Bereitstellung unterschiedlicher Inhalte je nach Domänennamen, auch wenn alle diese Domänen in dieselbe IP-Adresse aufgelöst werden. Jeder der Domänennamen wird von einem virtuellen Host verwaltet , also dem auf Namennamen basierenden virtuellen Host .
Hier ist eine Beispielkonfiguration für zwei Domänen:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.yourfirstdomain.tld
DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>
<VirtualHost *:80>
ServerName www.yourseconddomain.tld
DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>
Die offizielle Dokumentation zur Unterstützung von namenbasierten virtuellen Hosts finden Sie hier .
Beachten Sie jedoch, dass dies nur mit einfachen HTTP-Verbindungen funktioniert, nicht mit HTTPS (HTTP über SSL): Namensbasierte virtuelle Hosts müssen wissen, welcher Name angefordert wird, aber diese Informationen können Apache erst nach dem verschlüsselten SSL bekannt werden Verbindung wird hergestellt.
Wenn Ihr Setup auch mit HTTPS funktionieren soll, müssen Sie sich auf eine Erweiterung des SSL-Protokolls mit dem Namen Server Name Indication (SNI) ( RFC4366 ) verlassen. Grundsätzlich fügen SNI-fähige Clients (z. B. Webbrowser) beim Herstellen der verschlüsselten SSL-Verbindung zusätzliche Klartextinformationen hinzu, sodass der Server den angeforderten Namen kennen kann, bevor die SSL-Verbindung bereit ist.
Alle Browser unterstützen SNI noch nicht. Zum Zeitpunkt des Schreibens und laut Wikipedia tun diese:
- Internet Explorer 7 oder höher unter Windows Vista oder höher (funktioniert nicht unter XP, auch nicht unter IE 8)
- Mozilla Firefox 2.0 oder höher
- Opera 8.0 oder höher (das TLS 1.1-Protokoll muss aktiviert sein)
- Opera Mobile mindestens Version 10.1 Beta für Android
- Google Chrome (Vista oder höher, XP unter Chrome 6 oder neuer, OS X 10.5.7 oder höher unter Chrome 5.0.342.1 oder neuer)
- Safari 2.1 oder höher (Mac OS X 10.5.6 oder höher und Windows Vista oder höher)
- Konqueror / KDE 4.7 oder höher
- MobileSafari in Apple iOS 4.0 oder höher
- Android Standardbrowser auf Honeycomb (v3.x) oder neuer
- Windows Phone 7
- MicroB auf Maemo
Um mehrere namenbasierte virtuelle Hosts zu hosten, auf die über HTTPS zugegriffen werden kann, müssen Sie mod_ssl aktivieren und eine ähnliche Konfiguration wie im obigen Beispiel hinzufügen:
Listen 443
NameVirtualHost *:443
# Accept connections for these vhosts from non-SNI clients
# Clients without SNI will be handled by the first defined vhost.
# If you only want SNI-enabled client, put on instead
SSLStrictSNIVHostCheck off
<VirtualHost *:443>
ServerName www.yourfirstdomain.tld
DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>
<VirtualHost *:443>
ServerName www.yourseconddomain.tld
DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>
Denken Sie daran, dass Sie für die Verwendung von SSL SSL-Zertifikate für Ihre Domänen kaufen oder einige automatisch signierte Zertifikate generieren und Apache so konfigurieren müssen, dass sie für SSL-Verbindungen verwendet werden.
sudo service apache2 restart