Debian Apache Virtualhost und Proxy
Allgemeines
Im Folgenden wird erklärt, wie mit Hilfe von Virtualhosts mehrere Websites z.B. www.domain.org, wiki.domain.org, ox.domain.org als Subdomains einer Domain domain.org gehosted werden kann.
Mit dem sog. Apache Forwarding Proxy in Verbindung mit einem Virtualhost können andere Websites oder Geräte virtuell eingebunden werden. So ist es z.B. möglich, den Webserver eines Solarloggers, die Webseite der AVR-Steckdosenleiste, oder die Konfigurationsseite der Fritzbox als Subdomain - z.B. http://solarlog.domain.org zu erreichen. Für einen Surfer aus dem Internet sieht es so aus, als ob die Solarlog-Seiten virtuell auf dem "normalen" Apache Server liegen.
Anlegen eines Virtualhost
Die Virtualhost-Definitionen liegen im Verzeichnis /etc/apache2/sites-enabled. Der Filename der Virtualhost-Definition kann beliebig gewählt werden. Es ist auch möglich, mehrere Virtualhosts in einer Datei abzulegen. Allerdings empfiehlt es sich der Übersichtlichkeit halber nur einen Virtualhost pro File abzulegen und aussagekräftige Filenamen zu verwenden. Der Filename muss die Dateiendung .conf haben, damit das File von Apache2 verwendet wird.
Grundsätzlicher Aufbau einer Virtualhost Definition:
<VirtualHost *:Port> DocumentRoot /Pfad ServerName subdomain.domain.org ... </VirtualHost>
Port: Port für den der Virtualhost gelten soll. Normalerweise: 80 für HTTP und 443 für HTTPS. Pfad: Pfad unter dem die Webseite im Linux Dateisystem erreichbar ist. subdomain.domain.org: Subdomain (beliebig wählbar) und domain, unter der der Virtualhost erreichbar sein soll. Z.B. wiki.domain.org. Für HTTPS sind weitere Angaben bzgl. SSL-Zertifikat und -Key erforderlich. Details siehe HTTPS-Abschnitt. Es sind zahlreiche weitere Statements (z.B. <Directory> und <Location>) möglich, die im Rahmen dieser Anleitung nicht näher erläutert werden können.
HTTP
Ein einfacher Virtualhost für HTTP (Wiki_http.conf) hat z.B. folgenden Aufbau:
<VirtualHost *:80> DocumentRoot /var/lib/mediawiki ServerName wiki.domain.org </VirtualHost>
HTTPS
Für HTTPS sind weitere Statements hinschtlich SSL erforderlich. Z.B. obiges Beispiel für https (wiki_https.conf):
<VirtualHost *:443> DocumentRoot /var/lib/mediawiki ServerName wiki.domain.org SSLKeyFile /etc/ssl/private/ssl-cert-snakeoil.key SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLEngine on </VirtualHost>