Problembehandlung bei häufig auftretenden HTTP-Fehlercodes

Einführung

Beim Zugriff auf einen Webserver oder eine Anwendung wird jede von einem Server empfangene HTTP-Anforderung mit einem HTTP-Statuscode beantwortet. HTTP-Statuscodes sind dreistellige Codes und in fünf verschiedene Klassen unterteilt. Die Klasse eines Statuscodes kann schnell anhand seiner ersten Ziffer identifiziert werden:

  • 1xx: Information

  • 2xx: Erfolg

  • 3xx: Umleitung

  • 4xx: Clientfehler

  • 5xx: Serverfehler

Dieses Handbuch konzentriert sich auf die Identifizierung und Fehlerbehebung der am häufigsten auftretenden HTTP * -Fehler * -Codes, d. H. Statuscodes 4xx und 5xx aus Sicht eines Systemadministrators. Es gibt viele Situationen, in denen ein Webserver auf eine Anfrage mit einem bestimmten Fehlercode reagieren kann. Wir werden mögliche Ursachen und Lösungen behandeln.

Client- und Serverfehlerübersicht

Clientfehler oder HTTP-Statuscodes von 400 bis 499 sind das Ergebnis von HTTP-Anforderungen, die von einem Benutzerclient gesendet wurden (d. H. einen Webbrowser oder einen anderen HTTP-Client). Obwohl diese Arten von Fehlern clientspezifisch sind, ist es häufig hilfreich zu wissen, auf welchen Fehlercode ein Benutzer stößt, um festzustellen, ob das potenzielle Problem durch die Serverkonfiguration behoben werden kann.

Serverfehler oder HTTP-Statuscodes von 500 bis 599 werden von einem Webserver zurückgegeben, wenn bekannt ist, dass ein Fehler aufgetreten ist oder die Anforderung auf andere Weise nicht verarbeitet werden kann.

Allgemeine Tipps zur Fehlerbehebung

  • Wenn Sie einen Webserver mit einem Webbrowser testen, aktualisieren Sie den Browser, nachdem Sie die Serveränderungen vorgenommen haben

  • Überprüfen Sie die Serverprotokolle auf weitere Details zur Verarbeitung der Anforderungen durch den Server. Beispielsweise erzeugen Webserver wie Apache oder Nginx zwei Dateien mit den Namen "+ access.log " und " error.log +", die nach relevanten Informationen durchsucht werden können

  • Beachten Sie, dass HTTP-Statuscodedefinitionen Teil eines Standards sind, der von der Anwendung implementiert wird, die Anforderungen bedient. Dies bedeutet, dass der tatsächlich zurückgegebene Statuscode davon abhängt, wie die Serversoftware einen bestimmten Fehler behandelt. In diesem Handbuch sollten Sie im Allgemeinen in die richtige Richtung weisen

Nachdem Sie die HTTP-Statuscodes auf hoher Ebene verstanden haben, werden wir uns die häufig auftretenden Fehler ansehen.

[[400-bad-request]] === 400 Ungültige Anfrage

Der 400-Statuscode oder Bad Request-Fehler bedeutet, dass die an den Server gesendete HTTP-Anforderung eine ungültige Syntax aufweist.

Im Folgenden sind einige Beispiele aufgeführt, bei denen ein 400 Bad Request-Fehler auftreten kann:

  • Das der Site zugeordnete Cookie des Benutzers ist beschädigt. Durch Löschen des Cache und der Cookies des Browsers kann dieses Problem behoben werden

  • Fehlerhafte Anforderung aufgrund eines fehlerhaften Browsers

  • Fehlerhafte Anforderung aufgrund eines menschlichen Fehlers beim manuellen Bilden von HTTP-Anforderungen (z. falsches Verwenden von + curl +)

[[401-unauthorized]] === 401 nicht Autorisiert

Der 401-Statuscode oder ein Unauthorized -Fehler bedeutet, dass der Benutzer, der versucht, auf die Ressource zuzugreifen, nicht oder nicht korrekt authentifiziert wurde. Dies bedeutet, dass der Benutzer Anmeldeinformationen eingeben muss, um die geschützte Ressource anzeigen zu können.

Ein Beispielszenario, in dem ein 401 Unauthorized-Fehler zurückgegeben wird, besteht darin, dass ein Benutzer versucht, auf eine Ressource zuzugreifen, die durch HTTP-Authentifizierung geschützt ist (siehe https://www.digitalocean.com/community/tutorials/how-to-set-up) -http-Authentifizierung-mit-Nginx-auf-Ubuntu-12-10 [dieses Nginx-Tutorial]. In diesem Fall erhält der Benutzer einen 401-Antwortcode, bis er einen gültigen Benutzernamen und ein gültiges Kennwort (eines in der Datei "+ .htpasswd +") für den Webserver angegeben hat.

[[403-forbidden]] === 403 Verboten

Der Statuscode 403 oder ein Forbidden-Fehler bedeutet, dass der Benutzer eine gültige Anfrage gestellt hat, der Server die Anfrage jedoch ablehnt, da keine Berechtigung für den Zugriff auf die angeforderte Ressource vorliegt. Wenn unerwartet ein 403-Fehler auftritt, gibt es einige typische Ursachen, die hier erläutert werden.

Dateiberechtigungen

403-Fehler treten häufig auf, wenn der Benutzer, auf dem der Webserverprozess ausgeführt wird, nicht über ausreichende Berechtigungen zum Lesen der Datei verfügt, auf die zugegriffen wird.

Um ein Beispiel für die Fehlerbehebung bei einem 403-Fehler anzugeben, gehen Sie von der folgenden Situation aus:

  • Der Benutzer versucht, über "+ http: // example.com / index.html +" auf die Indexdatei des Webservers zuzugreifen

  • Der Webserver-Worker-Prozess gehört dem Benutzer "+ www-data"

  • Auf dem Server befindet sich die Indexdatei unter "+ / usr / share / nginx / html / index.html"

Wenn der Benutzer einen 403 Forbidden-Fehler erhält, stellen Sie sicher, dass der Benutzer "+ www-data" über ausreichende Berechtigungen zum Lesen der Datei verfügt. In der Regel bedeutet dies, dass die anderen Berechtigungen_ der Datei auf read gesetzt werden sollten. Es gibt verschiedene Möglichkeiten, dies sicherzustellen, aber der folgende Befehl funktioniert in diesem Fall:

sudo chmod o=r /usr/share/nginx/html/index.html

.zugang

Eine weitere mögliche Ursache für 403-Fehler ist häufig absichtlich die Verwendung einer "+ .htaccess" -Datei. Mit der Datei "+ .htaccess +" kann beispielsweise der Zugriff bestimmter Ressourcen auf bestimmte IP-Adressen oder Bereiche verweigert werden.

Wenn der Benutzer unerwartet einen 403 Forbidden-Fehler erhält, stellen Sie sicher, dass er nicht von Ihren Einstellungen für "+ .htaccess +" verursacht wird.

Indexdatei existiert nicht

Wenn der Benutzer versucht, auf ein Verzeichnis zuzugreifen, für das keine Standardindexdatei vorhanden ist, und die Verzeichnislisten nicht aktiviert sind, gibt der Webserver den Fehler 403 Verboten zurück. Wenn der Benutzer beispielsweise versucht, auf "+ http: // example.com / emptydir / " zuzugreifen und sich keine Indexdatei im Verzeichnis " emptydir +" auf dem Server befindet, wird der Status 403 zurückgegeben.

Wenn Sie Verzeichnislisten aktivieren möchten, können Sie dies in Ihrer Webserverkonfiguration tun.

[[404-not-found]] === 404 Nicht gefunden

Der 404-Statuscode oder ein Not Found-Fehler bedeutet, dass der Benutzer mit dem Server kommunizieren kann, die angeforderte Datei oder Ressource jedoch nicht finden kann.

404-Fehler können in einer Vielzahl von Situationen auftreten. Wenn der Benutzer unerwartet den Fehler 404 Not Found erhält, sollten Sie bei der Fehlerbehebung folgende Fragen stellen:

  • Weist der Link, über den der Benutzer auf Ihre Serverressource verwiesen wurde, einen Tippfehler auf?

  • Hat der Benutzer die falsche URL eingegeben?

  • Ist die Datei am richtigen Speicherort auf dem Server vorhanden? Wurde die Ressource auf dem Server verschoben oder gelöscht?

  • Verfügt die Serverkonfiguration über den richtigen Dokumentstammspeicherort?

  • Hat der Benutzer, dem der Webserver-Arbeitsprozess gehört, die Berechtigung, in das Verzeichnis zu wechseln, in dem sich die angeforderte Datei befindet? (Hinweis: Für den Zugriff auf Verzeichnisse sind Lese- und Ausführungsberechtigungen erforderlich.)

  • Handelt es sich bei der Ressource, auf die zugegriffen wird, um eine symbolische Verknüpfung? Stellen Sie in diesem Fall sicher, dass der Webserver so konfiguriert ist, dass er symbolischen Links folgt

[[500-internal-server-error]] === 500 Interner Serverfehler

Der 500-Statuscode oder Internal Server Error bedeutet, dass der Server die Anforderung aus einem unbekannten Grund nicht verarbeiten kann. Manchmal wird dieser Code angezeigt, wenn spezifischere 5xx-Fehler angemessener sind.

Die häufigste Ursache für diesen Fehler ist eine falsche Serverkonfiguration (z. eine fehlerhafte "+ .htaccess +" - Datei) oder fehlende Pakete (z. versuchen, eine PHP-Datei auszuführen, ohne dass PHP richtig installiert ist).

[[502-bad-gateway]] === 502 Bad Gateway

Der Statuscode 502 oder der Fehler Bad Gateway bedeutet, dass der Server ein Gateway oder ein Proxyserver ist und keine gültige Antwort von den Back-End-Servern empfängt, die die Anforderung tatsächlich erfüllen sollten.

Wenn es sich bei dem betreffenden Server um einen Reverseproxyserver handelt, z. B. einen Lastenausgleich, sollten Sie Folgendes überprüfen:

  • Die Back-End-Server (an die die HTTP-Anforderungen weitergeleitet werden) sind fehlerfrei

  • Der Reverse-Proxy ist ordnungsgemäß konfiguriert, und die richtigen Backends sind angegeben

  • Die Netzwerkverbindung zwischen den Back-End-Servern und dem Reverse-Proxy-Server ist fehlerfrei. Wenn die Server über andere Ports kommunizieren können, stellen Sie sicher, dass die Firewall den Datenverkehr zwischen ihnen zulässt

  • Wenn Ihre Webanwendung zum Abhören eines Sockets konfiguriert ist, stellen Sie sicher, dass sich der Socket am richtigen Speicherort befindet und über die richtigen Berechtigungen verfügt

[[503-service-unavailable]] === 503 Dienst nicht verfügbar

Der Statuscode 503 oder der Fehler Service Unavailable bedeutet, dass der Server überlastet ist oder gewartet wird. Dieser Fehler impliziert, dass der Dienst irgendwann verfügbar sein sollte.

Wenn der Server nicht gewartet wird, kann dies darauf hinweisen, dass der Server nicht über genügend CPU- oder Speicherressourcen verfügt, um alle eingehenden Anforderungen zu verarbeiten, oder dass der Webserver so konfiguriert werden muss, dass mehr Benutzer, Threads oder Prozesse zugelassen werden.

[[504-gateway-timeout]] === 504 Gateway-Zeitüberschreitung

Der Statuscode 504 oder der Fehler Gateway Timeout bedeutet, dass der Server ein Gateway oder ein Proxyserver ist und innerhalb des zulässigen Zeitraums keine Antwort von den Back-End-Servern erhält.

Dies tritt normalerweise in den folgenden Situationen auf:

  • Die Netzwerkverbindung zwischen den Servern ist schlecht

  • Der Back-End-Server, der die Anforderung erfüllt, ist aufgrund der schlechten Leistung zu langsam

  • Die Timeout-Dauer des Gateways oder Proxyservers ist zu kurz

Fazit

Nachdem Sie mit den häufigsten HTTP-Fehlercodes und den gängigen Lösungen für diese Codes vertraut sind, sollten Sie eine gute Grundlage für die Fehlerbehebung bei Ihren Webservern oder Anwendungen haben.

Wenn Sie auf Fehlercodes stoßen, die in diesem Handbuch nicht erwähnt wurden, oder wenn Sie andere wahrscheinliche Lösungen für die beschriebenen kennen, können Sie diese gerne in den Kommentaren diskutieren!