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
- 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.
- 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
undServerAlias
: 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:
- Erstelle eine neue Konfigurationsdatei.
- Gib einen einzigartigen Domainnamen und einen Root-Ordner an.
- 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!
GO TO FULL VERSION