GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So richten Sie die Apache Virtual Host-Konfiguration ein (mit Beispielen)

Mit Apache Virtual Host können Sie mehrere Websites auf demselben Server ausführen.

Zum Beispiel kann ich sowohl thegeekstuff.com als auch top5freeware.com auf einem einzigen physischen Server ausführen, auf dem ein Apache-Webserver läuft.

Abb.:Apache Virtual Host (Mehrere Websites, ein Apache)


Es gibt zwei Arten von Konfigurationen für virtuelle Apache-Hosts:1) IP-basierte virtuelle Hosts und 2) namensbasierte virtuelle Hosts. Für die meisten Szenarien wird ein namensbasierter virtueller Host empfohlen.

IP-basierter virtueller Host

Wenn Sie in dieser Konfiguration zwei Websites (mit unterschiedlichen IP-Adressen) auf den Server verweisen, auf dem Apache ausgeführt wird, sollten für diesen physischen Server zwei unterschiedliche IP-Adressen konfiguriert sein.

Das bedeutet, dass der Server über zwei Ethernet-Karten verfügen sollte, von denen jede auf die IP-Adresse der entsprechenden Website konfiguriert ist, die der virtuelle Apache-Host bedienen wird. Daher ist dies für die meisten Aspekte nicht praktikabel und Sie sollten dies nicht verwenden.

Im folgenden Beispiel enthält der Server zwei NIC-Karten, eine ist mit der IP-Adresse 192.168.101.1 für thegeekstuff.com konfiguriert, eine andere ist mit 192.168.102.1 für top5freeware.com konfiguriert. Diese beiden IP-Adressen werden von einem einzigen Apache-Webserver bedient, der auf diesem Server unter Verwendung eines IP-basierten virtuellen Hosts läuft.

Abb.:Apache IP-basierter virtueller Host

Namensbasierter virtueller Host

Wenn der Apache-Webserver in dieser Konfiguration eine Anfrage erhält, sucht er im HTTP-Header nach dem Hostnamen und bedient abhängig vom Hostnamen verschiedene Websites. Dies ist sehr einfach, da Sie nur eine IP-Adresse auf diesem physischen Server benötigen; Sie aktualisieren jedoch das DNS mit mehreren Website-Namen, die auf dieselbe IP-Adresse verweisen. Aus praktischen Gründen verwenden Sie nur die namensbasierte virtuelle Hostkonfiguration.

Im folgenden Beispiel enthält der Server nur eine NIC-Karte, die mit der IP-Adresse 192.168.101.1 konfiguriert ist. Der DNS-Eintrag für die Websites thegeekstuff.com und top5freeware.com zeigt auf die IP-Adresse 192.168.101.1. Wenn Apache eine Anfrage erhält, sucht es nach dem Hostnamen-Eintrag im HTTP-Header und stellt die entsprechende Website bereit.

Abb.:Apache Name-Based Virtual Host

1. Entkommentieren Sie httpd-vhosts.conf in httpd.conf

Wenn Sie Apache 2 aus der Quelle installiert haben, wird standardmäßig die folgende Zeile in der Datei httpd.conf kommentiert. Kommentieren Sie diese Zeile aus.

# vi /usr/local/apache2/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf

2. Virtuelle Hosts einrichten

Ändern Sie die httpd-vhosts.conf wie unten gezeigt, um eine namensbasierte virtuelle Hosteinstellung für zwei Hosts einzurichten.

  • NameVirtualHost *:80 – Gibt an, dass alle namensbasierten virtuellen Hosts den Standardport 80 überwachen
  • – Schließen Sie alle Apache-Konfigurationsparameter für jeden einzelnen virtuellen Host zwischen diesen VirtualHost-Tags ein. Alle Apache-Direktiven können innerhalb des Virtualhost-Containers verwendet werden.
  • Im folgenden Beispiel richten wir einen virtuellen Host für thegeekstuff.com und top5freeware.com ein, der denselben Port 80 überwacht. Es gibt also zwei , einen für jede Website .
  • Wenn Sie zu thegeekstuff.com gehen, werden die Dateien unter /usr/local/apache2/docs/thegeekstuff von Apache bereitgestellt; und das access_log und error_log für diese Seite werden unter /usr/local/apache2/logs/thegeekstuff
  • abgelegt
# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/usr/local/apache2/docs/thegeekstuff"
    ServerName thegeekstuff.com
    ServerAlias www.thegeekstuff.com
    ErrorLog "logs/thegeekstuff/error_log"
    CustomLog "logs/thegeekstuff/access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/usr/local/apache2/docs/top5freeware"
    ServerName top5freeware.com
    ServerAlias www.top5freeware.com
    ErrorLog "logs/top5freeware/error_log"
    CustomLog "logs/top5freeware/access_log" common
</VirtualHost>

3. Überprüfen Sie die VirtualHost-Konfigurationssyntax

Überprüfen Sie die Syntax der virtuellen Konfiguration mit „httpd -S“, wie unten gezeigt. Wenn alles richtig eingerichtet ist, wird nur „Syntax OK“ angezeigt.

# /usr/local/apache2/bin/httpd -S
VirtualHost configuration:
Syntax OK

Wenn etwas nicht richtig konfiguriert ist, wird eine Warnmeldung angezeigt, einschließlich der Meldung „Verzeichnis wird nicht beendet“, wie unten gezeigt.

# /usr/local/apache2/bin/httpd -S
Warning: DocumentRoot [/usr/local/apache2/docs/top5freeware] does not exist
Warning: ErrorLog [/usr/local/apache2/logs/thegeekstuff] does not exist
Syntax OK

4. Starten Sie Apache neu und testen Sie

# /usr/local/apache2/bin/apachectl restart

Wenn Sie jetzt zu thegeekstuff.com (oder www.thegeekstuff.com) gehen, stellt der Apache die Dateien aus dem Verzeichnis /usr/local/apache2/docs/thegeekstuff bereit.

Wenn Sie zu top5freeware.com (oder www.top5freeware.com) gehen, wird derselbe Apache, der auf demselben Server läuft, die Dateien aus dem /usr/local/apache2/docs/top5freeware-Verzeichnis bereitstellen.

Um es noch einmal zu wiederholen:Damit der namensbasierte virtuelle Host richtig funktioniert, sollte der DNS-Eintrag für diese beiden Websites auf dieselbe externe IP-Adresse des physischen Servers zeigen, auf dem der Apache-Webserver läuft.


Linux
  1. So richten Sie SSL/TLS mit Apache httpd auf Red Hat ein

  2. So erstellen Sie virtuelle Apache-Hosts unter CentOS 7

  3. Richten Sie einen namensbasierten virtuellen Host in Apache ein

  4. So richten Sie das ZFS-Dateisystem unter Linux mit zpool-Befehlsbeispielen ein

  5. So konfigurieren Sie den virtuellen Apache-Host auf Ubuntu

So richten Sie einen virtuellen Nginx-Host ein

So richten Sie den virtuellen Host Apache unter CentOS 8 ein

So richten Sie den virtuellen Host Apache unter Ubuntu 20.04 LTS ein

So installieren Sie Apache mit virtuellem Host unter CentOS 8

So richten Sie virtuelle Apache-Hosts unter Ubuntu 20.04 ein

So richten Sie die Passwortauthentifizierung mit Apache unter Ubuntu 18.04 ein