Nginx ist einer der beliebtesten Webserver der Welt und verantwortlich für das Hosting einiger der größten und datenverkehrsreichsten Websites im Internet. Er ist eine leichtgewichtige Wahl, die als Webserver oder Reverse-Proxy verwendet werden kann.
Dieser Leitfaden zeigt Ihnen, wie Sie Nginx auf Ihrem Ubuntu-20.04-Server installieren, die Firewall anpassen, den Nginx-Prozess verwalten und Serverblocks für das Hosting von mehreren Domänen von einem einzelnen Server aus einrichten.
Bevor Sie mit diesem Leitfaden beginnen, sollten Sie auf Ihrem Server einen regulären non-root user mit sudo-Berechtigungen konfiguriert haben. In unserem Leitfaden zur Ersteinrichtung des Servers unter Ubuntu 20.04. erfahren Sie, wie Sie ein reguläres Benutzerkonto für einen solchen user konfigurieren.
Wenn Sie über ein Konto verfügen, melden Sie sich zunächst als non-root user an.
Da Nginx in den Standard-Repositorys von Ubuntu verfügbar ist, kann es mithilfe des apt
-Paketsystems aus diesen Repositorys installiert werden.
Da es unsere erste Interaktion mit dem apt
-Paketsystem in dieser Sitzung ist, aktualisieren wir unseren lokalen Paketindex, damit wir auf die neuesten Paketlisten zugreifen können. Danach können wir nginx
installieren:
- sudo apt update
- sudo apt install nginx
Nachdem das Verfahren akzeptiert wurde, installiert apt
Nginx und alle erforderlichen Abhängigkeiten auf Ihren Server.
Vor dem Testen von Nginx muss die Firewall-Software angepasst werden, um den Zugriff auf den Dienst zu ermöglichen. Nginx registriert sich bei der Installation als Dienst mit ufw
, wodurch ein unkomplizierter Zugriff von Nginx ermöglicht wird.
Listen Sie die Anwendungskonfigurationen auf, mit denen ufw
arbeiten kann, indem Sie Folgendes eingeben:
- sudo ufw app list
Sie sollten eine Auflistung der Anwendungsprofile erhalten:
OutputAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Wie in der Ausgabe angezeigt, gibt es drei Profile für Nginx:
Es wird empfohlen, das restriktivste Profil zu aktivieren, das den von Ihnen konfigurierten Datenverkehr immer noch zulässt. Im Moment müssen wir nur den Datenverkehr auf Port 80 zulassen.
Sie können dies aktivieren, indem Sie Folgendes eingeben:
- sudo ufw allow 'Nginx HTTP'
Sie können die Änderung überprüfen, indem Sie Folgendes eingeben:
- sudo ufw status
Die Ausgabe zeigt an, welcher HTTP-Datenverkehr zugelassen ist:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Am Ende des Installationsprozesses startet Ubuntu 20.04 Nginx. Der Webserver sollte bereits ausgeführt werden.
Sie können eine Überprüfung mit dem Init-System systemd
durchführen, um sicherzustellen, dass der Dienst ausgeführt wird, indem Sie Folgendes eingeben:
- systemctl status nginx
Output● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process
Wie diese Ausgabe bestätigt, wurde der Dienst erfolgreich gestartet. Der beste Weg, dies zu testen, besteht jedoch darin, eine Seite von Nginx anzufordern.
Sie können auf die Standardstartseite von Nginx zugreifen, um zu bestätigen, dass die Software ordnungsgemäß ausgeführt wird, indem Sie zur IP-Adresse Ihres Servers navigieren. Wenn Sie die IP-Adresse Ihres Servers nicht kennen, können Sie sie mithilfe des Tools icanhazip.com finden. Mit diesem erhalten Sie Ihre IP-Adresse, wie sie von einem anderen Ort im Internet empfangen wurde:
- curl -4 icanhazip.com
Wenn Sie über die IP-Adresse Ihres Servers verfügen, geben Sie sie in die Adressleiste Ihres Browsers ein:
http://your_server_ip
Sie sollten nun die Standardstartseite von Nginx erhalten:
Wenn Sie auf dieser Seite sind, wird Ihr Server korrekt ausgeführt und steht zur Verwaltung bereit.
Nachdem Ihr Webserver nun ausgeführt wird, werfen wir einen Blick auf einige grundlegende Verwaltungsbefehle.
Um Ihren Webserver anzuhalten, geben Sie Folgendes ein:
- sudo systemctl stop nginx
Um den Webserver zu starten, wenn er angehalten wurde, geben Sie Folgendes ein:
- sudo systemctl start nginx
Um den Dienst anzuhalten und erneut zu starten, geben Sie Folgendes ein:
- sudo systemctl restart nginx
Wenn Sie nur Konfigurationsänderungen vornehmen, kann Nginx oft neu laden, ohne Verbindungen abzubrechen. Dazu geben Sie Folgendes ein:
- sudo systemctl reload nginx
Standardmäßig ist Nginx so konfiguriert, dass es beim Booten des Servers automatisch startet. Wenn Sie dieses Verhalten nicht wünschen, können Sie es durch folgende Eingabe deaktivieren:
- sudo systemctl disable nginx
Geben Sie Folgendes ein, um den Start des Dienstes beim Booten wieder zu aktivieren:
- sudo systemctl enable nginx
Sie haben nun grundlegende Verwaltungsbefehle kennengelernt und können beginnen, die Website so zu konfigurieren, dass sie mehr als eine Domäne hosten kann.
Bei Verwendung des Nginx-Webservers können Serverblocks (ähnlich wie virtuelle Hosts in Apache) verwendet werden, um Konfigurationsdetails einzuschließen und mehr als eine Domäne auf einem einzigen Server zu hosten. Wir richten eine Domäne namens your_domain ein, aber Sie sollten diesen Namen durch Ihren eigenen Domänennamen ersetzen. Um mehr über das Einrichten eines Domänennamens mit DigitalOcean zu erfahren, lesen Sie bitte unsere Einführung zu DigitalOcean DNS.
Auf Ubuntu 20.04 hat Nginx standardmäßig einen Serverblock aktiviert. Dieser ist so konfiguriert, dass er Dokumente aus einem Verzeichnis in /var/www/html
bereitstellt. Das eignet sich gut für eine Site, kann aber umständlich werden, wenn Sie mehrere Sites hosten. Statt /var/www/html
zu ändern, erstellen wir eine Verzeichnisstruktur innerhalb /var/www
für unsere your_domain und lassen dabei /var/www/html
als Standardverzeichnis, das bereitgestellt wird, wenn eine Client-Anfrage keine übereinstimmenden Sites ergibt.
Erstellen Sie das Verzeichnis für your_domain wie folgt, wobei Sie das Flag -p
nutzen, um alle erforderlichen übergeordneten Verzeichnisse zu erstellen:
- sudo mkdir -p /var/www/your_domain/html
Weisen Sie als Nächstes das Eigentum am Verzeichnis mit der $USER
Umgebungsvariablen zu:
- sudo chown -R $USER:$USER /var/www/your_domain/html
Die Berechtigungen Ihrer Webroots sollten korrekt sein, wenn Sie Ihren umask
-Wert, der die Standard-Dateiberechtigungen festlegt, nicht geändert haben. Um sicherzustellen, dass Ihre Berechtigungen korrekt sind und der Eigentümer die Dateien lesen, schreiben und ausführen kann, während Gruppen und anderen nur Lese- und Ausführungsberechtigungen erteilt werden, können Sie den folgenden Befehl eingeben:
- sudo chmod -R 755 /var/www/your_domain
Erstellen Sie als Nächstes eine index.html
Beispielsseite durch die Verwendung von nano
oder Ihrem bevorzugten Texteditor:
- nano /var/www/your_domain/html/index.html
Fügen Sie dann das folgende HTML-Beispiel hinzu:
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>
Wenn Sie fertig sind, speichern und schließen Sie die Datei, indem Sie STRG
und X
und dann Y
und ENTER
eingeben.
Sie müssen einen Serverblock mit den richtigen Anweisungen erstellen, damit Nginx diesen Inhalt bereitstellen kann. Anstatt die Standardkonfigurationsdatei direkt zu ändern, erstellen wir eine neue in /etc/nginx/sites-available/your_domain
:
- sudo nano /etc/nginx/sites-available/your_domain
Fügen Sie den folgenden Konfigurationsblock ein, der dem Standard ähnlich ist, aber für unser neues Verzeichnis und den Domänennamen aktualisiert wurde:
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
Beachten Sie, dass wir die root
-Konfiguration mit unserem neuen Verzeichnis und den server_name
mit unserem Domänennamen aktualisiert haben.
Als Nächstes aktivieren wir die Datei, indem wir sie mit dem sites-enabled
-Verzeichnis verknüpfen, das Nginx beim Starten liest:
- sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Zwei Serverblocks sind nun aktiviert und konfiguriert, um Anfragen auf Grundlage ihrer Anweisungen listen
und server_name
zu beantworten (mehr darüber, wie Nginx diese Anweisungen prozessiert, lesen Sie hier):
your_domain
: Antwortet auf Anfragen für your_domain
und www.your_domain
.default
: Antwortet auf alle Anfragen an Port 80, die nicht mit den anderen beiden Blocks übereinstimmen.Um ein mögliches Hash-Bucket-Speicherproblem zu vermeiden, das aus dem Hinzufügen zusätzlicher Servernamen entstehen kann, ist es erforderlich, einen einzelnen Wert in der Datei /etc/nginx/nginx.conf
anzupassen. Öffnen Sie die Datei:
- sudo nano /etc/nginx/nginx.conf
Suchen Sie die Anweisung server_names_hash_bucket_size
und entfernen Sie das Symbol #
, um die Kommentierung der Zeile aufzuheben. Wenn Sie nano verwenden, können Sie mit STRG
und w
schnell nach Wörtern in der Datei suchen.
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
Wenn Sie fertig sind, speichern und schließen Sie die Datei.
Als Nächstes testen Sie, um sicherzustellen, dass es in keiner Ihrer Nginx-Dateien Syntaxfehler gibt:
- sudo nginx -t
Wenn es keine Probleme gibt, starten Sie Nginx neu, um Ihre Änderungen zu aktivieren:
- sudo systemctl restart nginx
Nginx sollte jetzt für Ihren Domänennamen eingerichtet sein. Sie können dies testen, indem Sie zu http://your_domain
navigieren, wo Sie etwas Ähnliches wie Folgendes sehen sollten:
Nachdem Sie nun wissen, wie Sie den Nginx-Dienst verwalten, nehmen Sie sich einige Minuten Zeit, um sich mit einigen wichtigen Verzeichnissen und Dateien vertraut zu machen.
/var/www/html
: Der eigentliche Webinhalt, der standardmäßig nur aus der Nginx-Standardseite besteht, die Sie zuvor gesehen haben, wird aus dem Verzeichnis /var/www/html
bedient. Das kann durch die Anpassung der Konfigurationsdateien von Nginx geändert werden./etc/nginx
: Das Nginx-Konfigurationsverzeichnis. Hier befinden sich alle Konfigurationsdateien von Nginx./etc/nginx/nginx.conf
: Die Hauptkonfigurationsdatei von Nginx. Dies kann modifiziert werden, um die globale Konfiguration von Nginx zu ändern./etc/nginx/sites-available/
: Das Verzeichnis, in dem Serverblocks pro Website gespeichert werden können. Nginx verwendet die in diesem Verzeichnis gefundenen Konfigurationsdateien nicht, es sei denn, sie sind mit dem Verzeichnis sites-enabled
verknüpft. Üblicherweise wird die gesamte Serverblockkonfiguration in diesem Verzeichnis ausgeführt und durch Verknüpfung mit dem anderen Verzeichnis aktiviert./etc/nginx/sites-enabled/
: Das Verzeichnis, in dem aktivierte Serverblocks pro Website gespeichert werden. Üblicherweise werden diese erstellt, indem Sie mit Konfigurationsdateien verknüpft werden, die im Verzeichnis sites-available
zu finden sind./etc/nginx/snippets
: Dieses Verzeichnis enthält Konfigurationsfragmente, die an anderer Stelle in der Nginx-Konfiguration enthalten sein können. Potenziell wiederholbare Konfigurationssegmente sind gute Kandidaten für das Refactoring in Snippets./var/log/nginx/access.log
: Jede Anfrage auf Ihrem Webserver wird in dieser Protokolldatei aufgezeichnet, sofern Nginx nicht anders konfiguriert ist./var/log/nginx/error.log
: In diesem Protokoll werden alle Nginx-Fehler aufgezeichnet.Nach der Installation Ihres Webservers haben Sie nun viele Möglichkeiten für die Art des Inhalts und die Technologien, die Sie verwenden möchten, um eine umfassendere Benutzererfahrung zu erzielen.
Wenn Sie einen vollständigeren Anwendungsstapel erstellen möchten, lesen Sie den Artikel Installieren von Linux, Nginx, MySQL und PHP (LEMP-Stack) unter Ubuntu 20.04.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!