500 Internal Server Error

Auf dem Server ist etwas schiefgelaufen.

Wann du ihn verwendest

Unbehandelte Ausnahmen. Protokolliere die Details, gib sie nicht an den Client weiter.

Häufige Ursachen und Lösungen

Eine 500 bedeutet eine unbehandelte Exception oder eine Fehlkonfiguration auf dem Server. Fang mit den Logs zum Zeitpunkt der Anfrage an: Stacktraces der Anwendung, PHP- oder Python-Fehlerlogs, journalctl, docker logs oder CloudWatch. Häufige Ursachen: ein null- oder undefined-Wert, eine fehlgeschlagene Datenbankabfrage oder nicht ausgeführte Migration, eine fehlende Umgebungsvariable in Produktion, ein Syntaxfehler in der .htaccess oder falsche Berechtigungen auf einem Skript.

Mach 500er debugbar: Gib eine Request-ID in einem Header und im Body zurück, logge sie mit dem Stacktrace und schicke Fehler an einen Tracker wie Sentry. Zeig Clients in Produktion nie Stacktraces. Nimm 500 nicht für Fehler des Clients; Validierungsfehler gehören in den 4xx-Bereich, damit Alarme auf 5xx aussagekräftig bleiben. Erneute Versuche mit Backoff helfen bei vorübergehenden Fehlern, aber ein deterministischer Bug schlägt jedes Mal fehl.

Server-Fehler (5xx)

5xx-Codes sind Server-Fehler: Die Anfrage kann in Ordnung sein, aber der Server oder etwas dahinter ist ausgefallen. Für diese Codes lohnt sich eine Alarmierung.

So sieht es aus

HTTP/1.1 500 Internal Server Error

So sendest du ihn

Node.js / Expressres.status(500).end()
Python / Flaskreturn '', 500
nginxreturn 500;

So prüfst du ihn

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

HTTP-Statuscodes öffnen