500 Internal Server Error

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 Error

Jak go wysłać

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

Jak go sprawdzić

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

Otwórz narzędzie Kody statusu HTTP