Nginx ist einer der beliebtesten Webserver der Welt und verantwortlich für das Hosting einiger der größten und verkehrsreichsten Webseiten im Internet. Er ist in den meisten Fällen ressourcenfreundlicher als Apache und kann als Webserver oder Umkehrproxy eingesetzt werden.
In diesem Leitfaden wird erläutert, wie Sie Nginx auf Ihrem Ubuntu 18.04-Server installieren.
Bevor Sie mit diesem Leitfaden beginnen, sollten Sie einen regulären, nicht root-fähigen Benutzer mit sudo-Rechten auf Ihrem Server konfigurieren. Sie können lernen, wie Sie ein reguläres Benutzerkonto konfigurieren, indem Sie unserem Installationshandbuch für Ubuntu 18.04 folgen.
Wenn Sie über ein Konto verfügen, melden Sie sich als Nicht-Root-Benutzer an, um zu beginnen.
Da Nginx in den Standard-Repositories von Ubuntu verfügbar ist, kann es über das apt
-Paketsystem aus diesen Repositories installiert werden.
Dies ist unsere erste Interaktion mit dem apt
-Paketsystem in dieser Sitzung, daher werden wir unseren lokalen Paketindex aktualisieren, so dass wir Zugriff auf die neuesten Paketlisten haben. Anschließend können wir nginx
installieren:
- sudo apt update
- sudo apt install nginx
Nachdem Sie die Vorgehensweise akzeptiert haben, installiert apt
Nginx und alle erforderlichen Anhänge auf Ihrem Server.
Um Nginx zu testen, 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 auf Nginx möglich ist.
Die Anwendungskonfigurationen auflisten, mit denen ufw
vertraut ist, indem Sie eingeben:
- sudo ufw app list
Sie sollten eine Auflistung der Anwendungsprofile erhalten:
OutputAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Wie Sie sehen können, gibt es für Nginx drei Profile:
Es wird empfohlen, das restriktivste Profil zu aktivieren, das den von Ihnen konfigurierten Datenverkehr noch zulässt. Da wir in diesem Handbuch noch kein SSL für unseren Server konfiguriert haben, müssen wir nur den Datenverkehr auf Port 80 zulassen.
Aktivieren Sie dies durch folgende Eingabe:
- sudo ufw allow 'Nginx HTTP'
Um die Änderung zu überprüfen, geben Sie Folgendes ein:
- sudo ufw status
Sie sollten sehen, dass der HTTP-Verkehr in der angezeigten Ausgabe erlaubt 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 18.04 Nginx. Der Webserver sollte bereits in Betrieb sein.
Mit dem systemd
init-System können wir überprüfen, ob der Dienst ausgeführt wird, indem wir 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 2018-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process
Wie Sie oben sehen können, scheint der Dienst erfolgreich gestartet zu sein. Der beste Weg, dies zu testen, ist jedoch, eine Seite bei Nginx anzufordern.
Durch die Navigation zur IP-Adresse Ihres Servers können Sie auf die standardmäßige Nginx-Landseite zugreifen, um zu bestätigen, dass die Software ordnungsgemäß ausgeführt wird. Wenn Sie die IP-Adresse Ihres Servers nicht kennen, können Sie sie auf verschiedene Arten erhalten.
Versuchen Sie, dies an der Eingabeaufforderung Ihres Servers einzugeben:
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Sie erhalten ein paar Zeilen zurück. Sie können diese jeweils in Ihrem Webbrowser ausprobieren, um zu sehen, ob sie funktionieren.
Eine Alternative ist die Eingabe, die Ihnen Ihre öffentliche IP-Adresse aus der Sicht eines anderen Standorts im Internet geben sollte:
- curl -4 icanhazip.com
Wenn Sie die IP-Adresse Ihres Servers haben, geben Sie diese in die Adressleiste Ihres Browsers ein:
http://your_server_ip
Sie sollten die standardmäßige Anmeldeseite von Nginx sehen:
Diese Seite ist in Nginx enthalten, um Ihnen zu zeigen, dass der Server ordnungsgemäß arbeitet.
Nun, da Sie Ihren Webserver in Betrieb haben, lassen Sie uns einige grundlegende Verwaltungsbefehle durchgehen.
Um Ihren Webserver zu stoppen, geben Sie Folgendes ein:
- sudo systemctl stop nginx
Um den Webserver zu starten, wenn er gestoppt wird, geben Sie Folgendes ein:
- sudo systemctl start nginx
Um den Dienst zu stoppen und dann erneut zu starten, geben Sie Folgendes ein:
- sudo systemctl restart nginx
Wenn Sie lediglich Konfigurationsänderungen vornehmen, kann Nginx oft neu laden, ohne die Verbindungen zu verlieren. Geben Sie dazu Folgendes ein:
- sudo systemctl reload nginx
Standardmäßig ist Nginx so konfiguriert, dass es automatisch startet, wenn der Server bootet. Wenn Sie dies nicht wünschen, können Sie dieses Verhalten durch folgende Eingabe deaktivieren:
- sudo systemctl disable nginx
Um den Dienst beim Booten wieder zu aktivieren, können Sie Folgendes eingeben:
- sudo systemctl enable nginx
Bei Verwendung des Nginx-Webservers können_Serverblöcke_ (ähnlich wie virtuelle Hosts im Apache) verwendet werden, um Konfigurationsdetails zu kapseln und mehr als eine Domäne von einem einzigen Server aus zu hosten. Wir werden eine Domäne namens example.comeinrichten, aber Sie sollten diese durch Ihren eigenen ** Domänennamen ersetzen**. Weitere Informationen zum Einrichten eines Domänennamens mit DigitalOcean finden Sie in unserer Einführung in DigitalOcean DNS.
Auf Ubuntu 18.04 hat Nginx einen Serverblock aktiviert, der standardmäßig so konfiguriert ist, dass er Dokumente aus einem Verzeichnis unter /var/wwww/html bedient
. Dies funktioniert zwar gut für einen einzelnen Standort, kann aber bei mehreren Standorten unpraktisch werden. Anstatt /var/www/html
zu ändern, erstellen wir eine Verzeichnisstruktur in /var/www
für unsere example.com-Seite, indem wir /var/www/html
als Standardverzeichnis beibehalten, das zu bedienen ist, wenn eine Kundenanfrage mit keiner anderen Seite übereinstimmt.
Erstellen Sie das Verzeichnis example.com wie folgt und verwenden Sie -p
um alle notwendigen übergeordneten Verzeichnisse zu erstellen:
- sudo mkdir -p /var/www/example.com/html
Als nächstes weisen Sie dem Verzeichnis mit der Umgebungsvariablen $USER
das Besitzerrecht zu:
- sudo chown -R $USER:$USER /var/www/example.com/html
Die Berechtigungen Ihrer Web-Roots sollten korrekt sein, wenn Sie Ihren umask
-Wert nicht geändert haben, aber Sie können dies überprüfen, indem Sie Folgendes eingeben:
- sudo chmod -R 755 /var/www/example.com
Als nächstes erstellen Sie ein Muster einer index.html
-Seite mit nano
oder Ihrem bevorzugten Editor:
- nano /var/www/example.com/html/index.html
Fügen Sie darin folgende Beispiel-HTML hinzu:
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com server block is working!</h1>
</body>
</html>
Speichern und schließen Sie die Datei nach Abschluss des Vorgangs.
Damit Nginx diese Inhalte bereitstellen kann, ist es notwendig, einen Serverblock mit den richtigen Anweisungen zu erstellen. Anstatt die Standardkonfigurationsdatei direkt zu ändern, machen wir eine neue unter /etc/nginx/sites-available/example.com
:
- sudo nano /etc/nginx/sites-available/example.com
Fügen Sie den folgenden Konfigurationsblock ein, der dem Standard ähnlich ist, aber für unser neues Verzeichnis und unseren neuen Domänennamen aktualisiert wurde:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
Beachten Sie, dass wir die Root
-Konfiguration in unserem neuen Verzeichnis und den server_name
in unserem Domänennamen aktualisiert haben.
Anschließend aktivieren wir die Datei, indem wir einen Link zu dem sites-enabled
-Verzeichnis erstellen, aus dem Nginx beim Start liest:
- sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Zwei Serverblöcke sind nun aktiviert und konfiguriert, um auf Anfragen basierend auf ihren listen-
und server_name
-Anweisungen zu reagieren (Sie können hier mehr darüber erfahren, wie Nginx diese Anweisungen verarbeitet):
example.com
: Beantwortet Anfragen für
example.comund
www.example.com`.default
: Beantwortet alle Anfragen auf Port 80, die nicht mit den anderen beiden Blöcken übereinstimmen.Um ein mögliches Hash-Bucket-Speicherproblem zu vermeiden, das durch das Hinzufügen zusätzlicher Servernamen entstehen kann, ist es notwendig, einen Einzelwert in der Datei /etc/nginx/nginx.conf
anzupassen. Die Datei öffnen:
- sudo nano /etc/nginx/nginx.conf
Finden Sie den Befehl server_names_hash_bucket_size
und entfernen Sie das Symbol #
, um die Zeile zu entkommentieren:
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
Prüfen Sie anschließend, ob in Ihren Nginx-Dateien keine Syntaxfehler vorhanden sind:
- sudo nginx -t
Speichern und schließen Sie die Datei nach Abschluss des Vorgangs.
Wenn es keine Probleme gibt, starten Sie Nginx neu, um Ihre Änderungen zu aktivieren:
- sudo systemctl restart nginx
Nginx sollte nun Ihren Domänennamen bereitstellen. Dies können Sie testen, indem Sie zu http://example.com
navigieren, wo Sie so etwas sehen sollten:
Da Sie nun wissen, wie Sie den Nginx-Dienst selbst verwalten, sollten Sie sich einige Minuten Zeit nehmen, um sich mit einigen wichtigen Verzeichnissen und Dateien vertraut zu machen.
/var/www/html
: Der eigentliche Webinhalt, der standardmäßig nur aus der Standard-Nginx-Seite besteht, die Sie zuvor gesehen haben, wird aus dem Verzeichnis /var/wwww/html
bereitgestellt. Dies kann durch Anpassen der Nginx-Konfigurationsdateien geändert werden./etc/nginx
: Das Nginx-Konfigurationsverzeichnis. Alle Nginx-Konfigurationsdateien befinden sich hier./etc/nginx/nginx.conf
: Die Hauptkonfigurationsdatei von Nginx. Dies kann modifiziert werden, um Änderungen an der globalen Nginx-Konfiguration vorzunehmen./etc/nginx/sites-available/
: Das Verzeichnis, in dem die Serverblöcke pro Standort gespeichert werden können. Nginx verwendet die Konfigurationsdateien in diesem Verzeichnis nur dann, wenn sie mit dem sites-enabled
-Verzeichnis verknüpft sind. In der Regel wird die gesamte Konfiguration des Serverblocks in diesem Verzeichnis durchgeführt und dann durch Verknüpfung mit dem anderen Verzeichnis aktiviert./etc/nginx/sites-enabled/
: Das Verzeichnis, in dem die aktivierten Serverblöcke pro Standort gespeichert sind. In der Regel werden diese durch die Verknüpfung mit Konfigurationsdateien erstellt, die sich in dem Verzeichnis sites-available
befinden./etc/nginx/snippets
: Dieses Verzeichnis enthält Konfigurationsfragmente, die an anderer Stelle in der Nginx-Konfiguration eingefügt werden können. Potenziell wiederholbare Konfigurationssegmente sind gute Kandidaten für das Repaktorieren in Einzelteile./var/log/nginx/access.log
: Jede Anfrage an Ihren Webserver wird in dieser Protokolldatei aufgezeichnet, sofern Nginx nicht anders konfiguriert ist./var/log/nginx/error.log
: Alle Nginx-Fehler werden in diesem Protokoll festgehalten.Da Ihr Webserver nun installiert ist, haben Sie viele Optionen für die Art der zu erstellenden Inhalte und die Technologien, die Sie verwenden möchten, um ein reichhaltigeres Erlebnis zu schaffen.
Wenn Sie einen vollständigeren Applikationsstapel erstellen möchten, lesen Sie diesen Artikel, wie Sie einen LEMP-Stapel unter Ubuntu 18.04 konfigurieren können.
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!