Nginx Essentials: Fehlerbehebung bei Installation und Konfiguration

Einführung

Nginx ist ein kostenloser Open-Source-Webserver, auf dem Websites und Anwendungen aller Größen gehostet werden. Die Software ist bekannt für ihre geringe Auswirkung auf Speicherressourcen, ihre hohe Skalierbarkeit und ihre modulare, ereignisgesteuerte Architektur, die eine sichere, vorhersehbare Leistung bietet. Nginx ist nicht nur ein Webserver, sondern auch ein Load Balancer, ein HTTP-Cache und ein Reverse-Proxy.

Wie bei jedem komplexen Softwaretool kann es schwierig sein, sich die spezifischen Befehle und Best Practices für die Verwaltung eines Nginx-Servers oder die Fehlerbehebung bei auftretenden Problemen zu merken. Diese Anleitung im Cheatsheet-Stil dient als Kurzreferenz für alle, die mit Nginx arbeiten. Es werden einige grundlegende Dienstverwaltungsbefehle sowie Tipps zur Diagnose und Behebung einiger häufig auftretender Probleme behandelt.

So verwenden Sie dieses Handbuch:

  • Jeder Abschnitt kann unabhängig von anderen verwendet werden. Sie können also jederzeit zu den Abschnitten wechseln, die für Ihre Anforderungen relevant sind.

  • Die Befehle in den einzelnen Abschnitten dieses Handbuchs sind eigenständig. Sie sollten die roten Werte in den Beispielbefehlen durch Ihre eigenen Werte ersetzen.

  • Wenn relevant, enthalten die Abschnitte in diesem Handbuch Links zu anderen Ressourcen, die Sie für weitere Informationen konsultieren können.

  • In diesem Handbuch wird davon ausgegangen, dass Sie mit einer Version von Nginx arbeiten, die aus den Standard-Repositorys einer Debian-basierten Distribution installiert wurde. Bitte beachten Sie, dass einige der in diesem Handbuch beschriebenen Konventionen nicht in anderen Distributionen oder in Versionen von Nginx aus anderen Quellen enthalten sind.

Nginx installieren

Aktualisieren Sie mit + sudo apt-get Ihre Paketindizes und installieren Sie dann den Dienst:

sudo apt-get update
sudo apt-get install nginx

Weitere Informationen zum Installations- und Einrichtungsprozess finden Sie in unserem Tutorial unter How To Install Nginx on Ubuntu 16.04.

Überprüfen des Status von Nginx

Sie können überprüfen, ob Nginx auf Ihrem Computer ausgeführt wird, indem Sie Folgendes in Ihre Eingabeaufforderung eingeben:

sudo systemctl status nginx

Aktivieren von Nginx

Standardmäßig ist Nginx so konfiguriert, dass es automatisch startet, wenn der Server startet. Falls gewünscht, können Sie dieses Verhalten deaktivieren, indem Sie Folgendes eingeben:

sudo systemctl disable nginx

Geben Sie Folgendes ein, um den Dienst wieder für den Start beim Systemstart zu aktivieren:

sudo systemctl enable nginx

Beenden, Starten und Neuladen von Nginx

So stoppen Sie Ihren bereits laufenden Nginx-Server:

sudo systemctl stop nginx

Nachdem der Server gestoppt wurde, können Sie ihn erneut starten, indem Sie Folgendes eingeben:

sudo systemctl start nginx

Geben Sie Folgendes ein, um Nginx zu stoppen und erneut zu starten:

sudo systemctl restart nginx

Sie haben auch die Möglichkeit, Nginx neu zu laden, ohne die Verbindungen zu unterbrechen:

sudo systemctl reload nginx

Weitere Informationen zu "+ systemd " und dem Befehl " systemctl +" finden Sie unter https://www.digitalocean.com/community/tutorials/systemd-essentials-working-with-services-units-and-the-journal [Einführung in systemd essentials].

Erstellen eines Dokumentstamms für eine statische Site

Bei Verwendung des Nginx-Webservers werden Serverblöcke (ähnlich den virtuellen Hosts in Apache) verwendet, um mehr als eine Domäne auf einem einzelnen Server zu hosten. Jeder Serverblock verfügt über ein eigenes Dokumentenstammverzeichnis, ein spezielles Verzeichnis, das Nginx überprüfen muss, bevor der Domaininhalt bereitgestellt wird.

Mit den Befehlen im folgenden Block wird ein neuer Dokumentenstamm erstellt, der Besitz des Dokumentenstamms für Ihren Nicht-Root-Benutzer geändert und die Berechtigungen der einzelnen Unterverzeichnisse in "+ / var / www / +" geändert.

sudo mkdir -p /var/www//html
sudo chown -R $USER:$USER /var/www//html
find /var/www -type d -exec chmod  {} \;

In diesem Beispiel stellen wir sicher, dass die Dokumentstammverzeichnisse über globale Lese- und Ausführungsrechte verfügen. Sie sollten jedoch "++" durch einen anderen Wert ersetzen, um Ihren spezifischen Anforderungen gerecht zu werden.

Erstellen eines Dokumentstamms für eine dynamisch verarbeitete Site

Wenn Sie Nginx mit bestimmten Programmen (z. B. PHP-FPM) verwenden, um eine dynamisch verarbeitete Site zu erstellen, müssen Sie möglicherweise die Berechtigungen einiger Dateien anpassen, um den Zugriff auf die Gruppe "+ www-data +" oder sogar die Inhaberschaft zuzulassen, insbesondere wenn dies erforderlich ist in der Lage sein, in das Verzeichnis zu schreiben.

Mit den Befehlen im folgenden Block wird ein neuer Dokumentstamm erstellt, der Besitz des Dokumentstamms in die Gruppe "+ www-data " geändert und die Berechtigungen der einzelnen Unterverzeichnisse in " / var / www +" geändert.

sudo mkdir -p /var/www//html
sudo chown -R www-data:www-data /var/www/example.com
sudo find /var/www -type d -exec chmod  {} \;

Weitere Informationen zu Berechtigungen finden Sie unter introduction to Linux permissions. Es kann auch hilfreich sein, unser Tutorial unter https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04 zu lesen. [ Einrichten von Nginx-Serverblöcken (virtuellen Hosts) unter Ubuntu 16.04], das einen detaillierten Ansatz zum Erstellen und Ändern von Dokumentstammverzeichnissen bietet.

Konfigurationsdateien aktivieren

Sie können die Konfigurationsdatei eines Serverblocks aktivieren, indem Sie eine symbolische Verknüpfung vom Verzeichnis "+ sites-available " zum Verzeichnis " sites-enabled +" erstellen, die Nginx beim Start liest.

Geben Sie dazu den folgenden Befehl ein:

sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

Laden Sie Nginx nach dem Verknüpfen der Dateien neu, um die Änderung zu berücksichtigen, und aktivieren Sie die Konfigurationsdatei des Serverblocks:

sudo systemctl reload nginx

Beheben von Problemen mit dem Hash-Bucket-Speicher

Nginx verwendet Hash-Tabellen (die in "Buckets" organisiert sind), um statische Daten wie Servernamen oder MIME-Typen schnell zu verarbeiten. Wenn Sie also mehrere Servernamen hinzugefügt haben, ist die Wahrscheinlichkeit groß, dass die Größe der Hash-Buckets für Servernamen nicht mehr ausreicht, und beim Ändern wird der Fehler "+ Servernamen_hash_bucket_size " angezeigt. Dies kann durch Anpassen eines einzelnen Wertes in Ihrer Datei " / etc / nginx / nginx.conf +" behoben werden.

Geben Sie zum Öffnen dieser Konfigurationsdatei Folgendes ein:

sudo nano /etc/nginx/nginx.conf

Suchen Sie in der Datei die Direktive + server_names_hash_bucket_size +. Entfernen Sie das "+ # +" - Symbol, um das Kommentarzeichen in der Zeile zu entfernen, und erhöhen Sie den Wert der Direktive um die nächste Zweierpotenz:

/etc/nginx/nginx.conf

http {
   . . .

   server_names_hash_bucket_size ;

   . . .
}

Dadurch wird die Bucket-Größe der Nginx-Servernamen-Hash-Tabellen erhöht, und der Dienst kann alle von Ihnen hinzugefügten Servernamen verarbeiten. Speichern und schließen Sie die Datei, wenn Sie fertig sind, und starten Sie Nginx neu, um die Änderungen zu übernehmen.

Überprüfen Sie Ihre Konfigurationsdatei

Wann immer Sie Änderungen an Ihrer Nginx-Konfigurationsdatei vornehmen, ist es wichtig zu überprüfen, ob Sie Syntaxfehler hinterlassen haben. Dies kann durch Ausgabe des folgenden Befehls erfolgen:

sudo nginx -t

Wenn Ihre Konfigurationsdatei Fehler enthält, können Sie anhand der Befehlsausgabe genau feststellen, wo in der Datei der Fehler gefunden wurde. Umgekehrt wird eine Ausgabe ähnlich der folgenden angezeigt, wenn in keiner Ihrer Nginx-Konfigurationsdateien Syntaxfehler vorhanden sind:

Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Wenn keine Fehler gefunden wurden und Sie Ihre Änderungen sofort übernehmen möchten, starten Sie den Dienst neu:

sudo systemctl restart nginx

Wichtige Nginx-Dateien und -Verzeichnisse

Während Sie mit Nginx arbeiten, greifen Sie möglicherweise häufig auf die folgenden Dateien und Verzeichnisse zu:

Inhalt

  • + / var / www / html: Dies ist der Speicherort des Standard-Dokumentenstamms, von dem aus der eigentliche Webinhalt bereitgestellt wird. Der Dokumentenstamm kann durch Ändern der Nginx-Konfigurationsdateien geändert werden.

Serverkonfiguration

  • + / etc / nginx / +: Das standardmäßige Nginx-Konfigurationsverzeichnis, in dem sich alle Ihre Nginx-Konfigurationsdateien befinden.

  • + / etc / nginx / nginx.conf +: Die primäre Nginx-Konfigurationsdatei. Auf diese Weise können globale Änderungen an der Konfiguration von Nginx vorgenommen werden.

  • + / etc / nginx / sites-available / default +: Die Standard-Server-Blockdatei von Nginx. Andere standortspezifische Serverblöcke werden ebenfalls im Verzeichnis "+ sites-available " gespeichert. Diese werden jedoch nur verwendet, wenn sie im Verzeichnis " sites-enabled +" verknüpft sind.

  • + / etc / nginx / sites-enabled / +: Das Verzeichnis, in dem aktivierte Serverblöcke pro Site gespeichert werden. In der Regel werden diese durch Verknüpfen mit Konfigurationsdateien erstellt, die sich im Verzeichnis "+ sites-available +" befinden.

Server-Protokolle

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

  • Führen Sie den folgenden Befehl aus, um auf die Systemd-Protokolle des Nginx-Prozesses zuzugreifen:

sudo journalctl -u nginx

Fazit

In diesem Handbuch werden grundlegende Befehle und Vorgehensweisen zum Verwalten eines Nginx-Servers beschrieben, darunter das Starten, Stoppen und Überprüfen des Status von Nginx, das Auffinden des Dokumentenstamms einer Website und das Überprüfen der Syntax einer Nginx-Konfigurationsdatei. Um mehr über die Arbeit mit Nginx zu erfahren, empfehlen wir, die folgenden Tutorials durchzugehen.