Coś poszło nie tak na serwerze.
Kiedy go używać
Nieobsłużone wyjątki. Zapisz szczegóły w logach, ale nie ujawniaj ich klientowi.
Typowe przyczyny i rozwiązania
500 oznacza nieobsłużony wyjątek lub błędną konfigurację na serwerze. Zacznij od logów z chwili żądania: stack trace'ów aplikacji, logów błędów PHP lub Pythona, journalctl, docker logs albo CloudWatch. Typowe przyczyny: wartość null lub undefined, nieudane zapytanie do bazy danych lub niezastosowana migracja, brakująca zmienna środowiskowa na produkcji, błąd składni w .htaccess albo złe uprawnienia skryptu.
Spraw, by błędy 500 dało się debugować: zwracaj ID żądania w nagłówku i w treści, loguj je razem ze stack trace'em i wysyłaj błędy do narzędzia takiego jak Sentry. Nigdy nie pokazuj klientom stack trace'ów na produkcji. Nie używaj 500 dla błędów klienta; nieudana walidacja należy do 4xx, dzięki czemu alerty na 5xx zachowują sens. Ponawianie z backoffem pomaga przy przejściowych awariach, ale deterministyczny błąd wystąpi za każdym razem.
Błąd serwera (5xx)
Kody 5xx to błędy serwera: żądanie może być poprawne, ale zawiódł serwer lub coś za nim. Warto ustawić na nie alerty.
Jak to wygląda
HTTP/1.1 500 Internal Server ErrorJak go wysłać
| Node.js / Express | res.status(500).end() |
|---|---|
| Python / Flask | return '', 500 |
| nginx | return 500; |
Jak go sprawdzić
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/