Tutorial

So installieren Sie Nginx unter Ubuntu 20.04

Published on May 28, 2020

Senior Manager, DevEd

Deutsch
So installieren Sie Nginx unter Ubuntu 20.04

Einführung

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.

Voraussetzungen

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.

Schritt 1 – Installieren von Nginx

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:

  1. sudo apt update
  2. sudo apt install nginx

Nachdem das Verfahren akzeptiert wurde, installiert apt Nginx und alle erforderlichen Abhängigkeiten auf Ihren Server.

Schritt 2 – Anpassen der Firewall

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:

  1. sudo ufw app list

Sie sollten eine Auflistung der Anwendungsprofile erhalten:

Output
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

Wie in der Ausgabe angezeigt, gibt es drei Profile für Nginx:

  • Nginx Full: Dieses Profil öffnet sowohl Port 80 (normaler, unverschlüsselter Webverkehr) als auch Port 443 (mit TLS/SSL verschlüsselter Verkehr)
  • Nginx HTTP: Dieses Profil öffnet nur Port 80 (normaler, unverschlüsselter Verkehr)
  • Nginx HTTPS: Dieses Profil öffnet nur Port 443 (mit TLS/SSL verschlüsselter Datenverkehr)

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:

  1. sudo ufw allow 'Nginx HTTP'

Sie können die Änderung überprüfen, indem Sie Folgendes eingeben:

  1. sudo ufw status

Die Ausgabe zeigt an, welcher HTTP-Datenverkehr zugelassen ist:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Schritt 3 – Testen Ihres Webservers

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:

  1. 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:

  1. 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:

Nginx-Standardseite

Wenn Sie auf dieser Seite sind, wird Ihr Server korrekt ausgeführt und steht zur Verwaltung bereit.

Schritt 4 – Verwalten der Nginx-Prozesse

Nachdem Ihr Webserver nun ausgeführt wird, werfen wir einen Blick auf einige grundlegende Verwaltungsbefehle.

Um Ihren Webserver anzuhalten, geben Sie Folgendes ein:

  1. sudo systemctl stop nginx

Um den Webserver zu starten, wenn er angehalten wurde, geben Sie Folgendes ein:

  1. sudo systemctl start nginx

Um den Dienst anzuhalten und erneut zu starten, geben Sie Folgendes ein:

  1. sudo systemctl restart nginx

Wenn Sie nur Konfigurationsänderungen vornehmen, kann Nginx oft neu laden, ohne Verbindungen abzubrechen. Dazu geben Sie Folgendes ein:

  1. 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:

  1. sudo systemctl disable nginx

Geben Sie Folgendes ein, um den Start des Dienstes beim Booten wieder zu aktivieren:

  1. 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.

Schritt 5 – Einrichten von Serverblocks (empfohlen)

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:

  1. sudo mkdir -p /var/www/your_domain/html

Weisen Sie als Nächstes das Eigentum am Verzeichnis mit der $USER Umgebungsvariablen zu:

  1. 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:

  1. 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:

  1. nano /var/www/your_domain/html/index.html

Fügen Sie dann das folgende HTML-Beispiel hinzu:

/var/www/your_domain/html/index.html
<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:

  1. 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:

/etc/nginx/sites-available/your_domain
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:

  1. 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:

  1. 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.

/etc/nginx/nginx.conf
...
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:

  1. sudo nginx -t

Wenn es keine Probleme gibt, starten Sie Nginx neu, um Ihre Änderungen zu aktivieren:

  1. 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:

Erster Nginx-Serverblock

Schritt 6 – Kennenlernen der wichtigen Nginx-Dateien und -Verzeichnisse

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.

Inhalt

  • /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.

Server-Konfiguration

  • /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.

Serverprotokolle

  • /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.

Zusammenfassung

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.

Learn more about our products

About the authors
Default avatar

Senior Manager, DevEd

Open source advocate and lover of education, culture, and community.

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
1 Comments


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!

I still need some help according to the addition server block on a local webserver. I use Ubuntu 24.04.01 LTS server, hostname “houseserver”. Basic website can be reached / ping via “houseserver.local”. I failed at step 5, adding additional block server (tester). I tried three possible options for the new block. 1st: tester.houseserver.local, 2nd: tester.local, 3rd: tester.houseserver. I failed on all above. I assume, that there is maybe a further step necessary to initiate propagating the new/additional block server. Question is where. May someone help me here?!?! Thank you very much.

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.