CodeGym /Kurse /Docker SELF /Konfiguration von virtuellen Hosts

Konfiguration von virtuellen Hosts

Docker SELF
Level 7 , Lektion 1
Verfügbar

Konfiguration von virtuellen Hosts

1. Was sind virtuelle Hosts?

Stell dir vor, du eröffnest ein gemütliches Café. Der Großteil deiner Kunden kommt wegen des Kaffees ☕, aber ab und zu bestellt jemand Tee 🍵. Anstatt ein separates Lokal für Teeliebhaber zu eröffnen, richtest du einfach eine kleine Ecke für sie ein. In der Welt der Webserver wird dieses Konzept als virtuelle Hosts bezeichnet. Sie erlauben deinem Server, mehrere Websites (mit unterschiedlichen Domains) zu betreiben, während du nur einen physischen Server nutzt.

Arten von virtuellen Hosts

  1. IP-basierte Hosts — jede Website bekommt ihre eigene, einzigartige IP-Adresse. Das ist wie eine VIP-Zone auf einem Konzert: Jeder Kunde mit einem VIP-Ticket bekommt seinen eigenen Platz.
  2. Domain-basierte Hosts — mehrere Websites können sich eine IP-Adresse teilen. Hier verwendet der Server den Hostnamen (Domainname) aus der Anfrage des Clients, um herauszufinden, welche Webseite gezeigt werden soll. Das ist die häufigere und praktischere Option für die meisten Projekte.

2. Einrichtung eines virtuellen Hosts in Nginx

1. Erstellen eines neuen virtuellen Hosts

Um einen virtuellen Host zu konfigurieren, muss man zuerst eine Konfigurationsdatei erstellen. Diese Datei enthält Informationen darüber, wie der Server Anfragen für eine bestimmte Domain verarbeiten soll.

Erstelle eine Datei für deine Website, z. B. example.com:

sudo nano /etc/nginx/sites-available/example.com

Füge folgenden Konfigurationsblock hinzu:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Lass uns den Code im Detail betrachten:

  • listen 80;: Gibt an, dass der Server auf Port 80 hören soll (standardmäßig für HTTP verwendet).
  • server_name example.com www.example.com;: Definiert, auf welche Domain-Namen der Server reagieren soll.
  • root /var/www/example.com;: Die Direktive legt den Root-Ordner fest, in dem die Website-Dateien gespeichert sind.
  • index index.html;: Gibt die Datei an, die als "Startseite" der Website dient.
  • location / { try_files $uri $uri/ =404; }: Einstellung der Anfrageverarbeitung. Falls Datei oder Verzeichnis nicht gefunden werden, wird ein 404-Fehler zurückgegeben.

2. Aktivieren der Konfiguration

Nun muss der virtuelle Host "aktiviert" werden. In Nginx geschieht dies über symbolische Links:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Prüfe dann, ob keine Fehler in der Konfiguration vorliegen:

sudo nginx -t

Wenn alles in Ordnung ist, starte den Server neu:

sudo systemctl reload nginx

3. Überprüfen der Funktion

Erstelle einen Ordner für die Website-Dateien:

sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html

Füge folgenden einfachen HTML-Code hinzu:

<h1>Willkommen auf example.com!</h1>
<p>Dein Nginx-Server ist bereit, Anfragen zu beantworten.</p>

Speichere die Datei, öffne dann den Browser unter: http://example.com. Wenn du eine Begrüßungsnachricht siehst, funktioniert der virtuelle Host!

4. Symbolische Links in Linux

Symbolische Links (oder Soft Links, Symlinks) sind spezielle Dateiobjekte, die auf eine andere Datei oder ein Verzeichnis verweisen. Sie funktionieren wie "Shortcuts" in Windows und ermöglichen es, auf eine Datei oder einen Ordner über einen alternativen Pfad zuzugreifen.

Symbolische Links enthalten den Pfad zum Originalobjekt, nicht das Objekt selbst. Falls das Original verschoben oder gelöscht wird, wird der Link "defekt", da er auf ein nicht existentes Objekt verweist.

Befehl zum Erstellen eines symbolischen Links:

ln -s target link_name
  • target — der Pfad zum Originalobjekt.
  • link_name — Name des Links.

Beispiel:

ln -s /var/log/syslog log_link

Nun kannst du über log_link auf die Datei /var/log/syslog zugreifen.

Anwendungsmöglichkeiten:

  • Erleichterung der Navigation.
  • Erstellen alternativer Zugriffspunkte für Dateien.
  • Organisation von Verzeichnissen.

3. Konfiguration eines virtuellen Hosts in Apache

1. Erstellen einer Konfigurationsdatei

Apache verwendet einen anderen Ansatz. Hier befinden sich die Konfigurationsdateien für virtuelle Hosts im Verzeichnis /etc/apache2/sites-available/. Erstelle eine Datei für deine Website:

sudo nano /etc/apache2/sites-available/example.com.conf

Füge folgenden Code hinzu:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com

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

Kurz erklärt:

  • <VirtualHost *:80>: Gibt an, dass die Konfiguration für alle Anfragen am Port 80 gilt.
  • ServerName und ServerAlias: Definieren den Haupt- und alternative Domain-Namen für die Website.
  • DocumentRoot: Gibt das Stammverzeichnis der Website an.
  • <Directory>: Ein Block, der Zugriffsrechte und Verhalten für das angegebene Verzeichnis definiert.

2. Aktivierung der Konfiguration

Um die Konfiguration zu aktivieren, benutze den Befehl:

sudo a2ensite example.com.conf

Starte den Server neu, damit die Änderungen wirksam werden:

sudo systemctl restart apache2

3. Funktionstest

Erstelle wieder ein Verzeichnis und eine Datei für die Website:

sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html

Fülle die Datei mit folgendem Inhalt:

<h1>Willkommen bei example.com auf Apache!</h1>

Speichere die Datei und öffne sie im Browser: http://example.com. Wenn du die Willkommensseite siehst – Glückwunsch, du hast einen virtuellen Host in Apache konfiguriert!


4. Überprüfung und Verwaltung mehrerer Hosts

Konfiguration eines zweiten virtuellen Hosts

Angenommen, du möchtest eine zweite Website bereitstellen: test.com. Der Prozess ist derselbe:

  1. Erstelle eine neue Konfigurationsdatei.
  2. Gib einen einzigartigen Domainnamen und einen Root-Ordner an.
  3. Aktiviere die Konfiguration und starte den Server neu.

Für Nginx:

sudo nano /etc/nginx/sites-available/test.com
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
sudo systemctl reload nginx

Für Apache:

sudo nano /etc/apache2/sites-available/test.com.conf
sudo a2ensite test.com.conf
sudo systemctl restart apache2

Fehlerbehebung

Wenn deine virtuellen Hosts nicht funktionieren, starte mit der Fehlerüberprüfung. Zum Beispiel:

  • Für Nginx:

      sudo tail -f /var/log/nginx/error.log
    
  • Für Apache:

      sudo tail -f /var/log/apache2/error.log
    

Du kannst auch den curl-Befehl nutzen, um die Website direkt zu testen:

curl -I http://example.com

Jetzt kannst du virtuelle Hosts konfigurieren und mehrere Websites auf einem Server betreiben. Damit einher geht die HTTPS-Konfiguration, damit deine Websites sicher werden. Aber das ist Thema der nächsten Vorlesung!

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION