Grundlegende Nginx-Fehlerbehebung
Dieser Artikel zeigt einige grundlegende Fehlerbehebungen für Nginx, einen der beliebtesten HTTP-Server. Der Zweck besteht darin, einige der häufigsten Fehler zu beheben, die möglicherweise in Ihrer Nginx-Konfiguration vorhanden sind.
Nach Syntaxfehlern oder Warnungen in der Konfiguration suchen
Mit einem einfachen Befehl können Sie den Status der Nginx-Konfigurationsdatei überprüfen:$ sudo systemctl config nginx
Die Ausgabe zeigt, ob die Konfigurationsdatei korrekt ist, oder zeigt die Datei und die Zeile, in der das Problem liegt, falls dies nicht der Fall ist.
$ sudo systemctl config nginx
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl config nginx
"worker_connections" directive is not allowed here in /etc/nginx/nginx.conf:12
nginx: configuration file /etc/nginx/nginx.conf test failed
Falls Sie den Service-Befehl in Ihrem System nicht zur Verfügung haben, können Sie sich für die Verwendung des -t
entscheiden Nginx-Parameter, der auch die Konfigurationsdatei auf korrekte Syntax testet und dann versucht, die Dateien zu öffnen, auf die in der Konfiguration verwiesen wird.$ sudo nginx -t
Überprüfen Sie, ob Nginx ausgeführt wird
Um den Status des Nginx-Dienstes zu überprüfen, können Sie den folgenden Befehl verwenden:$ sudo systemctl status nginx
Sie können auch die generischen Befehle verwenden, um den Status des Dienstes zu validieren:$ sudo /etc/init.d/nginx status
Stellen Sie sicher, dass die Ports offen sind und der Dienst lauscht
Stellen Sie sicher, dass die erforderlichen Ports geöffnet sind, und um zu überprüfen, ob der Nginx-Dienst sie abhört, können Sie den lsof
verwenden Befehl, idealerweise in den Standardports 80 und 443.
$ sudo lsof -i :80 -s TCP:LISTEN
nginx 1305 nginx 6u IPv4 1613873 0t0 TCP *:http (LISTEN)
nginx 1305 nginx 7u IPv6 1613874 0t0 TCP *:http (LISTEN)
nginx 1306 nginx 6u IPv4 1613873 0t0 TCP *:http (LISTEN)
nginx 1306 nginx 7u IPv6 1613874 0t0 TCP *:http (LISTEN)
Überprüfen Sie, ob Nginx Anfragen verarbeitet
Wenn Nginx tatsächlich auf die entsprechenden Ports lauscht, besteht der nächste Schritt darin, zu prüfen, ob es Anfragen verarbeitet, was mit curl
erfolgen kann Tool, indem Sie die IP, URL oder localhost verwenden, wenn Ihr Setup auf localhost lauscht:
$ curl -i http://127.0.0.1/nginx_status
HTTP/1.1 200 OK
Server: nginx/1.11.1
Date: Wed, 08 Aug 2021 11:36:43 GMT
Content-Type: text/plain
Content-Length: 97
Connection: keep-alive
Active connections: 1
server accepts handled requests
3 3 3
Reading: 0 Writing: 1 Waiting: 0
Überprüfen Sie die Protokolle
Überprüfen Sie die letzten Protokolle des Nginx-Dienstes.$ sudo tail -f /var/log/nginx/access.log /var/log/nginx/error.log
Berechtigungen prüfen
Stellen Sie sicher, dass Nginx über die entsprechenden Berechtigungen für den Zugriff auf die benötigten Dateien verfügt.
$ namei -om /usr/share/nginx/html/index.html
f: /usr/share/nginx/html/index.html
drwxr-xr-x root root /
drwxr-xr-x root root usr
drwxr-xr-x root root share
drwxr-xr-x root root nginx
drwxr-xr-x root root html
-rw-r--r-- root root index.html
Laden Sie den Dienst neu
Falls Sie Änderungen an der Konfigurationsdatei vorgenommen haben, die nicht angewendet wurden, können Sie den Dienst neu laden, neue Nginx-Prozesse starten und die alten Worker sanft herunterfahren, um ein schnelles und aggressives Herunterfahren zu vermeiden.$ sudo service nginx reload
Für das schnelle Herunterfahren, das nicht auf das Beenden von Prozessen wartet, können Sie Nginx neu starten.$ sudo service nginx restart
Debug-Modus aktivieren
In der Konfigurationsdatei (normalerweise /etc/nginx/nginx.conf
) ändern Sie die Protokollebene für das error_log
Direktive:
server {
# stuff
error_log /var/logs/nginx/error.log debug;
# stuff
}
Sie können Umschreibungsregeln debuggen, um die Verarbeitungsergebnisse im Fehlerprotokoll anzuzeigen:
server {
# stuff
error_log /var/logs/nginx/error.log notice;
rewrite_log on;
# stuff
}
Überprüfen Sie die DNS-Auflösung
Regeln auf /etc/hosts
haben Vorrang vor DNS-Auflösungen. Sie können die DNS-Einträge überprüfen mit:$ host -t A website.com
Sie können auch die vollständige DNS-Auflösung überprüfen:$ dig +trace website.com
Schlussfolgerungen
Dies sind einige grundlegende Schritte zur Fehlerbehebung für einige der häufigsten Fehler mit Nginx. Sie können sich auch auf die Dokumentation verlassen, wenn diese Schritte Ihr Problem nicht beheben, und sich die große Beliebtheit von Nginx zunutze machen.