Zum Hauptinhalt springen Skip to page footer

Effizientes Hosting mehrerer Websites mit Apache Virtual Host

| Tutorial | Apache Linux

Entdecken Sie die Möglichkeiten des Apache Virtual Hosts und hosten Sie mehrere Websites auf einem einzigen Server. Egal ob verschiedene Domänen oder Subdomänen, mit dieser leistungsstarken Funktion können Sie den eingehenden Webverkehr basierend auf dem angeforderten Hostnamen an die entsprechende Website weiterleiten. Erfahren Sie, wie Sie mit Apache Virtual Host Ihre Serverkonfiguration anpassen können, um auf verschiedene Hostnamen oder IP-Adressen zu reagieren und den Datenverkehr gezielt an die richtigen Verzeichnisse oder Anwendungen weiterzuleiten.

Apache Virtual Host

Mit Apache Virtual Host können Sie mehrere Websites auf einem einzigen Server hosten. Dies bedeutet, dass Sie mehrere Domänen oder Subdomänen auf demselben Server ausführen und eingehenden Webverkehr basierend auf dem angeforderten Hostnamen an die entsprechende Website weiterleiten können.

Apache ist ein weit verbreiteter Webserver auf vielen Linux- und Unix-basierten Systemen. Mit dem virtuellen Host-Mechanismus von Apache können Sie die Konfiguration Ihres Webservers anpassen, um auf verschiedene Hostnamen oder IP-Adressen zu reagieren und den Datenverkehr an das richtige Verzeichnis oder die richtige Anwendung weiterzuleiten.

Die Konfiguration des virtuellen Hosts erfolgt normalerweise in der Datei httpd.conf oder einer anderen Konfigurationsdatei, die in einem speziellen Verzeichnis wie /etc/apache2/sites-available gespeichert ist. Hier ist ein Beispiel für die Konfiguration eines virtuellen Hosts in Apache. 

<VirtualHost *:80>
    ServerName www.website1.com
    DocumentRoot /var/www/website1.com/public_html
</VirtualHost>

<VirtualHost *:80>
    ServerName www.website2.com
    DocumentRoot /var/www/website2.com/public_html
</VirtualHost>

Dieses Beispiel hat zwei virtuelle Hosts. Der erste virtuelle Host antwortet auf Anfragen an „www.website1.com“ und stellt den Inhalt des Verzeichnisses „/var/www/website1.com/public_html“ bereit. Der zweite virtuelle Host antwortet auf Anfragen an „www.website2.com“ und zeigt den Inhalt des Verzeichnisses „/var/www/website2.com/public_html“ an.

Tags enthalten die Konfiguration für einzelne virtuelle Hosts. Der Wert * im bedeutet, dass der Host alle verfügbaren IP-Adressen und Port 80 (den Standard-HTTP-Port) überwacht. Nach jedem erstellen oder ändern einer Konfiguration eines virtuellen Hosts, müssen Sie den Apache-Webserver neu starten, damit die Änderungen wirksam werden. Der Webserver leitet die Anfrage dann basierend auf dem angeforderten Hostnamen an den entsprechenden virtuellen Host weiter. 

Hinweis:

Virtuelle Hosts sind nur aktiv, wenn im Verzeichnis “/etc/apache2/sites-enabled” ein Link existiert, der auf die entsprechende conf-Datei im Verzeichnis “/etc/apache2/sites-available” verweist.

Konfiguration von Virtual Hosts

Wenn Sie virtuelle Hosts mit Apache konfigurieren, können Sie mehrere Einstellungen anpassen, um das Verhalten Ihrer virtuellen Hosts zu bestimmen. Hier sind einige der wichtigsten Konfigurationsoptionen:  

ServerName: Hiermitwird der virtuelle Hostname festgelegt, der zum Abgleichen eingehender Anforderungen verwendet wird. Beispiel: „Servername www.website1.com“ 

ServerAlias: Mit dieser Option können Sie einen alternativen Namen (Alias) für den virtuellen Host definieren. Dadurch ist es möglich, denselben Inhalt verschiedenen Domains oder Subdomains bereitzustellen. Beispiel: „ServerAlias website1.com“ 

DocumentRoot: Dieser Befehl gibt das Verzeichnis an, in dem sich die vom virtuellen Host bereitgestellten Website-Dateien befinden. Beispiel: „DocumentRoot /var/www/example.com/public_html“ 

Directory: Mit dieser Anweisung können Sie Berechtigungen und andere Einstellungen für das angegebene Verzeichnis festlegen. Beispiel: 

<Directory /var/www/example.com/public_html>
  Options FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

ErrorLog: Dadurch wird der Pfad zur Fehlerprotokolldatei festgelegt, in der Apache Fehler und Warnungen des virtuellen Hosts protokolliert. Beispiel: “ErrorLog /var/log/apache2/example.com-error.log

CustomLog: Diese Einstellung definiert den Pfad zur Protokolldatei, in der Apache Zugriffsprotokolle für den virtuellen Host speichert. Beispiel: "CustomLog /var/log/apache2/example.com-error.log

Dies sind nur einige der grundlegenden Konfigurationsoptionen für virtuelle Apache-Hosts. Es stehen viele weitere erweiterte Einstellungen zum Konfigurieren von SSL-Zertifikaten, zum Festlegen von Rewrite-Regeln, zum Festlegen von Proxy-Weiterleitungen und mehr zur Verfügung. Die genauen Konfigurationsmöglichkeiten hängen von Ihrer Apache-Version und Ihrem Betriebssystem ab. 

Option "FollowSymLinks"

Die Option „FollowSymLinks“ ist eine Apache-Konfigurationseinstellung, die das Verfolgen symbolischer Links (Symlinks) ermöglicht. Ein symbolischer Link ist eine spezielle Datei, die auf eine andere Datei oder ein anderes Verzeichnis verweist.

Wenn die Option „FollowSymLinks“ aktiviert ist, erlaubt Apache das Verfolgen symbolischer Links im angegebenen Verzeichnis. Dies bedeutet, dass Apache symbolische Links als normale Links behandelt, die auf das tatsächliche Zielobjekt verweisen. Wenn beispielsweise eine Datei über einen symbolischen Link angefordert wird, stellt Apache den Inhalt der verknüpften Datei bereit. Wenn die Option „FollowSymLinks“ deaktiviert oder nicht angegeben ist, ignoriert Apache symbolische Links und behandelt sie nicht als gültige Links. In diesem Fall generiert Apache stattdessen einen Fehler oder verweigert den Zugriff für die symbolische Linkanforderung.

Es ist wichtig zu beachten, dass die Aktivierung der Option „FollowSymLinks“ ein potenzielles Sicherheitsrisiko darstellen kann. Wenn ein Angreifer einen symbolischen Link zu einer vertraulichen Datei oder einem vertraulichen Verzeichnis erstellen kann, riskiert er, vertrauliche Informationen preiszugeben oder unbefugten Zugriff zu gewähren. Daher empfehlen wir Ihnen, die Verwendung von Symlinks und die Aktivierung von „FollowSymLinks“ sorgfältig abzuwägen und Symlinks nur in Verzeichnissen zuzulassen, bei denen keine Sicherheitsbedenken bestehen. Die FollowSymLinks-Option wird normalerweise in einer virtuellen Host-Konfigurationsdatei oder einer allgemeinen Serverkonfiguration festgelegt. Beispiel:

<Directory /var/www/website1.com/public_html>
    Options FollowSymLinks
    ...
</Directory>

In diesem Beispiel wird die Option "FollowSymLinks" für das Verzeichnis "/var/www/example.com/public_html" aktiviert, sodass Apache symbolische Links innerhalb dieses Verzeichnisses folgt.

Direktive "AllowOverride All"

Die „AllowOverride All“-Direktive ist eine Apache-Konfigurationsoption, die die Verwendung sogenannter „.htaccess“-Dateien ermöglicht und die Anwendung dieser Direktiven auf die entsprechenden Verzeichnisse ermöglicht.

Eine „.htaccess“-Datei ist eine Konfigurationsdatei, die spezifische Anweisungen für den Apache-Webserver enthält und sich normalerweise in einem bestimmten Verzeichnis befindet. Wenn die Option „AllowOverride All“ für ein bestimmtes Verzeichnis oder einen virtuellen Host aktiviert ist, kann Apache die in der entsprechenden „.htaccess“-Datei enthaltenen Anweisungen interpretieren und auf den Webserver anwenden.

Die Einstellung „AllowOverride All“ gibt an, dass alle möglichen Anweisungen in der „.htaccess“-Datei angewendet werden können. Dazu gehören beispielsweise Anweisungen wie Serverkonfigurationsänderungen, Modulaktivierung, URL-Umleitungen und Benutzerauthentifizierung. Durch die Verwendung von „.htaccess“-Dateien und die Aktivierung von „AllowOverride All“ können Website-Betreiber spezifische Konfigurationseinstellungen für einzelne Verzeichnisse anpassen, ohne die Konfiguration des zentralen Servers zu ändern. Dies bietet eine flexible Möglichkeit, verschiedene Aspekte der Website-Konfiguration zu verwalten, insbesondere in Umgebungen, in denen Benutzer keinen direkten Zugriff auf die Serverkonfiguration haben.

Es ist wichtig zu beachten, dass die Verwendung von „.htaccess“-Dateien und die Aktivierung von „AllowOverride All“ die Leistung Ihres Webservers beeinträchtigen kann. Das Suchen und Interpretieren der „.htaccess“-Datei für jede Anfrage kann zusätzliche Ressourcen und Verarbeitungszeit erfordern. Daher sollten Sie beim Umgang mit „.htaccess“ vorsichtig sein und es nur dann aktivieren, wenn Sie es wirklich benötigen. Die Einstellung „AllowOverride All“ wird normalerweise in einer Konfigurationsdatei eines virtuellen Hosts oder einer allgemeinen Serverkonfiguration angegeben. 

<Directory /var/www/website1.com/public_html>
    AllowOverride All
    ...
</Directory>

In diesem Beispiel wird „AllowOverride All“ für das Verzeichnis „/var/www/example.com/public_html“ aktiviert, damit Apache die Einstellung in der entsprechenden „.htaccess“-Datei berücksichtigt. 

Direktive "Require all granted"

Die Direktive “Require all granted” ist eine Apache-Konfigurationsoption, die angibt, dass der Zugriff auf ein bestimmtes Verzeichnis oder einen virtuellen Host allen Clients oder Benutzern erlaubt ist, ohne dass eine spezielle Authentifizierung oder Zugriffsbeschränkungen erforderlich sind.

Wenn „Require all granted“ festgelegt ist, wird jedem Client oder Benutzer, der auf das entsprechende Verzeichnis oder den virtuellen Host zugreift, automatisch Zugriff ohne weitere Überprüfung oder Zugriffsbeschränkungen gewährt. Dadurch wird das Verzeichnis oder der virtuelle Host für normale Benutzer frei zugänglich.

Require all granted“ ist nützlich, um allen Clients oder Benutzern den Zugriff auf den Inhalt eines Verzeichnisses oder virtuellen Hosts zu ermöglichen, ohne dass eine bestimmte Authentifizierung oder Berechtigungen erforderlich sind. Es ist wichtig zu beachten, dass dies auch bedeutet, dass potenziell sensible oder persönliche Informationen der Öffentlichkeit zugänglich gemacht werden. Wir empfehlen, „Require all granted“ sparsam zu verwenden und es nur auf Verzeichnisse oder virtuelle Hosts anzuwenden, für die keine Zugriffsbeschränkungen oder Authentifizierung erforderlich sind. Wenn Sie bestimmte Zugriffsrechte oder Zugriffsbeschränkungen für bestimmte Clients oder Benutzer festlegen möchten, sollten Sie andere Zugriffskontrollmechanismen wie Benutzer- und Gruppenauthentifizierung oder IP-basierte Zugriffsbeschränkungen verwenden.

Die Einstellung „Require all granted“ wird normalerweise in der Konfigurationsdatei des virtuellen Hosts oder in der allgemeinen Serverkonfiguration angegeben. Beispiel:

<Directory /var/www/website1.com/public_html>
    Require all granted
    ...
</Directory>

In diesem Beispiel wird "Require all granted" für das Verzeichnis "/var/www/website1.com/public_html" festgelegt, was bedeutet, dass alle Clients oder Benutzer auf den Inhalt des Verzeichnisses zugreifen können, ohne weitere Authentifizierung oder Zugriffsbeschränkungen zu benötigen.