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 ErrorSo sendest du ihn
| Node.js / Express | res.status(500).end() |
|---|---|
| Python / Flask | return '', 500 |
| nginx | return 500; |
So prüfst du ihn
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/