Wie man virtuelle Hosts in Nginx auf Ubuntu konfiguriert
Die Konfiguration von virtuellen Hosts in Nginx ermöglicht es Ihnen, mehrere Websites auf einem einzigen Server zu hosten, wobei jede Website ihren eigenen Domainnamen hat. Virtuelle Nginx-Hosts werden mit “Serverblöcken” konfiguriert, die Einstellungen für jede Website festlegen. Diese Anleitung führt Sie durch die Einrichtung von virtuellen Hosts auf einem Ubuntu-Server mit Nginx.
1. Voraussetzungen
- Nginx ist installiert: Stellen Sie sicher, dass Nginx auf Ihrem Server installiert ist. Falls nicht, installieren Sie es mit:
sudo apt update
sudo apt install nginx
- Domain-Namen: Lassen Sie die Domainnamen, die Sie hosten möchten, auf die IP-Adresse Ihres Servers zeigen. Sie können Ihre /etc/hosts-Datei zu Testzwecken ändern.
2. Verzeichnisse für jede Website einrichten
Jede Website sollte ihr eigenes Verzeichnis haben, in dem die Dateien der Website gespeichert werden. Lassen Sie uns Verzeichnisse für zwei Beispiel-Websites erstellen, example1.com und example2.com.
sudo mkdir -p /var/www/example1.com/html
sudo mkdir -p /var/www/example2.com/html
Geben Sie dem Nginx-Benutzer (www-data) die Rechte an diesen Verzeichnissen, um sicherzustellen, dass Nginx über die erforderlichen Berechtigungen verfügt.
sudo chown -R www-data:www-data /var/www/example1.com/html
sudo chown -R www-data:www-data /var/www/example2.com/html
Setzen Sie die entsprechenden Berechtigungen:
sudo chmod -R 755 /var/www
3. Beispielinhalte erstellen
Um die virtuellen Hosts zu testen, fügen Sie Beispiel-HTML-Dateien für jede Site hinzu.
Example1.com:
echo "<h1>Welcome to Example1.com!</h1>" | sudo tee /var/www/example1.com/html/index.html
Example2.com:
echo "<h1>Welcome to Example2.com!</h1>" | sudo tee /var/www/example2.com/html/index.html
4. Konfigurationsdateien für virtuelle Hosts erstellen
Nun erstellen wir für jede Website eine Konfigurationsdatei für den Serverblock (virtueller Host). Nginx speichert diese Konfigurationsdateien in dem Verzeichnis /etc/nginx/sites-available/.
Schritt 1: Konfiguration für Example1.com erstellen
Erstellen Sie eine neue Konfigurationsdatei für example1.com:
sudo nano /etc/nginx/sites-available/example1.com
Fügen Sie die folgende Konfiguration hinzu:
server {
listen 80;
server_name example1.com www.example1.com;
root /var/www/example1.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Schritt 2: Konfiguration für Example2.com erstellen
Erstellen Sie eine Konfigurationsdatei für example2.com:
sudo nano /etc/nginx/sites-available/example2.com
Fügen Sie die folgende Konfiguration hinzu:
server {
listen 80;
server_name example2.com www.example2.com;
root /var/www/example2.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
5. Aktivieren Sie die virtuellen Hosts
Nginx verwendet symbolische Links, um virtuelle Hosts zu aktivieren. Verknüpfen Sie die Konfigurationsdateien von sites-available mit sites-enabled:
sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/Beispiel2.com /etc/nginx/sites-enabled/
6. Testen Sie die Konfiguration
Um sicherzustellen, dass Ihre Konfiguration keine Syntaxfehler enthält, führen Sie einen Test durch:
sudo nginx -t
Wenn alles korrekt ist, erhalten Sie eine Bestätigungsmeldung. Wenn es Fehler gibt, zeigt Nginx Details an, die Ihnen bei der Fehlersuche helfen.
7. Nginx neu starten
Nachdem Sie die Konfiguration bestätigt haben, starten Sie Nginx neu, um die Änderungen zu übernehmen:
sudo systemctl restart nginx
8. Zugriff auf die Websites
Wenn die Domänennamen auf Ihren Server verweisen, sollten Sie jetzt in der Lage sein, auf jede Website zuzugreifen, indem Sie sie besuchen:
- http://example1.com
- http://example2.com
Für lokale Tests können Sie Ihre /etc/hosts-Datei bearbeiten, um die Domainnamen der IP-Adresse Ihres Servers zuzuordnen. Fügen Sie Einträge wie:
127.0.0.1 example1.com 127.0.0.1 example2.com
Speichern und schließen Sie die Datei, und versuchen Sie dann, die Websites in Ihrem Browser aufzurufen.
9. Aktivieren von HTTPS für jede Site (optional)
Für sichere Verbindungen können Sie SSL-Zertifikate mit Let’s Encrypt einrichten. So aktivieren Sie HTTPS:
Installieren Sie certbot:
sudo apt install certbot python3-certbot-nginx
Führen Sie den folgenden Befehl aus, um SSL-Zertifikate für jede Domain zu erhalten und zu konfigurieren:
sudo certbot --nginx -d example1.com -d www.example1.com
sudo certbot --nginx -d beispiel2.de -d www.example2.com
Folgen Sie den Anweisungen, und Certbot wird automatisch HTTPS in Ihrer Nginx-Konfiguration einrichten.
Schlussfolgerung
Durch das Einrichten von virtuellen Hosts in Nginx unter Ubuntu können Sie mehrere Websites auf einem einzigen Server hosten, jede mit ihrer eigenen Konfiguration und ihrem eigenen Inhalt. Diese Einrichtung ist effizient und skalierbar und macht Nginx zu einer ausgezeichneten Wahl für das Hosting mehrerer Websites auf demselben Server.