Mit Nginx Server Blocks können Sie mehr als eine Website auf einem einzigen Computer ausführen. Mit Server-Blöcken können Sie das Site Document Root (das Verzeichnis, das die Website-Dateien enthält) angeben, eine separate Sicherheitsrichtlinie für jede Site erstellen, unterschiedliche SSL-Zertifikate für jede Site verwenden und vieles mehr.
In diesem Artikel geben wir eine Schritt-für-Schritt-Anleitung zum Einrichten von Nginx-Serverblöcken (ähnlich Apache Virtual Hosts) unter Ubuntu 18.04.
Voraussetzungen #
Stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllt haben, bevor Sie mit dem Tutorial fortfahren:
- Sie haben einen Domainnamen, der auf die IP Ihres öffentlichen Servers verweist. Wir werden
example.com
verwenden . - Sie haben Nginx installiert, indem Sie diese Anweisungen befolgen.
- Sie sind als Benutzer mit sudo-Berechtigungen angemeldet.
Server Blocks
wird als Virtual host
bezeichnet .Ein virtueller Host ist ein Apache-Begriff. Erstellen Sie die Verzeichnisstruktur #
Das Dokumentenstammverzeichnis ist das Verzeichnis, in dem die Website-Dateien für einen Domänennamen gespeichert und als Antwort auf Anfragen bereitgestellt werden. Sie können den Dokumentenstamm an einem beliebigen Ort festlegen.
Wir werden die folgende Verzeichnisstruktur verwenden:
/var/www/
├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
├── domain3.com
│ └── public_html
Grundsätzlich erstellen wir für jede Domain, die wir auf unserem Server hosten möchten, ein separates Verzeichnis im Verzeichnis /var/www
Verzeichnis. In jedem dieser Verzeichnisse erstellen wir ein public_html
Verzeichnis, in dem die Dateien der Domain-Website gespeichert werden.
Lassen Sie uns das Root-Verzeichnis für unsere Domain example.com
erstellen :
sudo mkdir -p /var/www/example.com/public_html
Zu Testzwecken erstellen wir eine index.html
Datei im Dokumentstammverzeichnis der Domain.
Öffnen Sie Ihren Editor und erstellen Sie die Demodatei:
/var/www/example.com/public_html/index.html<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to example.com</title>
</head>
<body>
<h1>Success! example.com home page!</h1>
</body>
</html>
In diesem Beispiel führen wir die Befehle als sudo-Benutzer aus und die neu erstellten Dateien und Verzeichnisse gehören dem Root-Benutzer.
Um Berechtigungsprobleme zu vermeiden, ändern Sie den Besitz des Dokumentenstammverzeichnisses der Domain auf den Nginx-Benutzer (www-data
):
sudo chown -R www-data: /var/www/example.com
Erstellen Sie einen Serverblock #
Standardmäßig werden auf Ubuntu-Systemen Konfigurationsdateien für Nginx-Serverblöcke in /etc/nginx/sites-available
gespeichert Verzeichnis, die durch symbolische Links zu /etc/nginx/sites-enabled/
aktiviert werden Verzeichnis.
Öffnen Sie den Editor Ihrer Wahl und erstellen Sie die folgende Serverblockdatei:
/etc/nginx/sites-available/example.comserver {
listen 80;
listen [::]:80;
root /var/www/example.com/public_html;
index index.html;
server_name example.com www.example.com;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ =404;
}
}
Sie können die Konfigurationsdatei beliebig benennen, aber normalerweise ist es am besten, den Domänennamen zu verwenden.
Um die neue Serverblockdatei zu aktivieren, erstellen Sie einen symbolischen Link von der Datei zu sites-enabled
Verzeichnis, das von Nginx beim Start gelesen wird:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Testen Sie die Nginx-Konfiguration auf korrekte Syntax:
sudo nginx -t
Wenn keine Fehler vorhanden sind, sieht die Ausgabe so aus:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Starten Sie den Nginx-Dienst neu, damit die Änderungen wirksam werden:
sudo systemctl restart nginx
Um schließlich zu überprüfen, ob der Serverblock wie erwartet funktioniert, öffnen Sie http://example.com
in Ihrem Browser Ihrer Wahl, und Sie sehen etwa Folgendes: