Apache: VirtualHosts konfigurieren und nutzen

In diesem Artikel geht es um die VirtualHost-Konfiguration vom Apache-Server auf einem Linux-System (Debian) und wie man mit VirtualHosts arbeitet, d.h. wie man sie (richtig) aktiviert und deaktiviert, und was man dabei beachten muss.

Der Apache-Server hat eine einheitliche Verzeichnisstruktur, an die man sich bei der VirtualHost-Konfiguration halten sollte. Einzelne VirtualHost-Konfigurationen befinden sich im Verzeichnis /etc/apache2/sites-available/.

Hier ist es empfehlenswert, für jeden VirtualHost eine eigene Datei anzulegen und den Hostnamen als Dateinamen zu verwenden, damit man mit den vom Apache-Paket mitgelieferten Perl-Skripten a2ensite und a2dissite ganz leicht einzelne VirtualHosts aktivieren und deaktivieren kann. Außerdem empfiehlt es sich auch in /var/www/ für jedes VirtualHost-Verzeichnis den Dateinamen der VirtualHost-Konfigurationsdatei zu verwenden.

Beispiel

  • VirtualHost-Konfigurationsdatei:
    /etc/apache2/sites-available/sub.example.org.conf

  • VirtualHost-DocumentRoot:
    /var/www/sub.example.org/

Neue VirtualHosts zum Apache-Server hinzufügen

Um einen neuen VirtualHost hinzuzufügen, erstellen wir mit Root-Rechten eine Datei im Verzeichnis /etc/apache2/sites-available/ und nennen sie beispielsweise sub.example.org.conf. In diese Datei fügen wir nun zwei <VirtualHost>-Sektionen ein: einen für normale Verbindungen über den Hostnamen auf Port 80 (HTTP) und einen optional für Port 443 (HTTPS). Bei der VirtualHost-Konfiguration für HTTPS ist der einzige Unterschied, dass mit IfModule überprüft wird, ob das SSL-Modul aktiviert ist und dass die Pfade zum TLS-Zertifikat, dem privaten Schlüssel und gegebenenfalls dem Intermediate-Serverzertifikat der entsprechenden Zertifizierungsstelle angegeben sind.

Beispiel: VirtualHost-Konfiguration für sub.example.org auf Port 80

<VirtualHost *:80>
	ServerName sub.example.org
	DocumentRoot "/var/www/sub.example.org/"

	<Directory /var/www/sub.example.org/>
		Options -Indexes
	</Directory>
</VirtualHost>

Beispiel: VirtualHost-Konfiguration für sub.example.org Port 443

<VirtualHost *:443>
	<IfModule mod_ssl.c>
		ServerName sub.example.org
		DocumentRoot "/var/www/sub.example.org/"

		SSLEngine on
		SSLCertificateFile      /etc/apache2/certificates/sub.example.org/certificate.pem
		SSLCertificateKeyFile   /etc/apache2/certificates/sub.example.org/private.pem
		SSLCertificateChainFile /etc/apache2/certificates/YOUR_CA/intermediate.pem

		<Directory /var/www/sub.example.org/>
			Options -Indexes
		</Directory>
	</IfModule>
</VirtualHost>

Einzelne VirtualHosts mit a2ensite und a2dissite aktivieren und deaktivieren

Die VirtualHost-Konfiguration für die Subdomain sub.example.org ist nun erfolgreich erstellt und muss noch in die Apache-Konfiguration eingebunden werden. Dazu muss man mit Root-Rechten a2ensite sub.example.org.conf ausführen und danach die Apache-Konfiguration mit service apache2 reload neu laden. Wer bereits die Verzeichnisstruktur von /etc/apache2/ unter die Lupe genommen hat, dem wird aufgefallen sein, dass noch ein weiteres Verzeichnis mit dem Namen sites-enabled existiert. Der Apache bindet in seiner Hauptkonfigurationsdatei /etc/apache2/apache2.conf nämlich alle Dateien aus diesem Verzeichnis ein.

Dieses Verzeichnis enthält nur Symlinks auf die VirtualHost-Konfigurationsdateien in /etc/apache2/sites-available/. Genau das machen die beiden Perl-Skripte a2ensite und a2dissite. Sie erstellen einen Symlink auf den echten VirtualHost und aktivieren ihn damit oder sie entfernen den SymLink wieder und deaktivieren ihn damit.

Nachtrag bzgl. systemd

Auf systemd-basierenden Linux-Distributionen kann (bzw. sollte) der Befehl service apache2 reload durch systemctl reload apache2 ersetzt werden, da hier systemd die zentrale Stelle ist, um Dienste zu steuern.

Hinweis:
Dies ist ein älterer Artikel von meinem alten Blog. Die Kommentare zu diesem Artikel werden (falls vorhanden) später noch hinzugefügt.

Der Autor

Unter dem Namen »TheBlackPhantom« alias »BlackY« veröffentlichte ich auf meinem alten Blog, BlackPhantom.DE, in der Zeit von 2011 bis 2015 leidenschaftlich Beiträge über Computer, Internet, Sicherheit und Malware. Während der BlackPhantom-Zeit war ich noch grün hinter den Ohren und lernte viel dazu. Mehr Infos vielleicht in Zukunft...