Przejdź do treści
Bezpłatne narzędzie

Kody statusu HTTP: lista i znaczenie

Przeszukiwalna lista kodów statusu HTTP: wpisz 404, 403, 500, 502 lub „przekierowanie” i sprawdź, co oznacza kod HTTP, jakie są jego przyczyny i jak rozwiązać problem. 70 kodów od 100 do 526, z przykładami dla nginx i Apache do skopiowania, błędami Cloudflare od 520 do 526 oraz kodami nginx 444 i 499. Bezpłatnie i bez rejestracji — wyszukiwanie odbywa się w całości w Twojej przeglądarce.

Autor: Dimitri Heissler

Prowadzisz własny projekt? Przenieś swoją stronę na szybki hosting WWW.

Wyszukiwanie obejmuje numer, nazwę, opis, przyczyny i przykłady konfiguracji, np. „timeout” lub „client_max_body_size”.

Często wyszukiwane:

70 z 70 kodów statusu

Znaczenie

Serwer otrzymał nagłówki żądania i nie zgłasza zastrzeżeń. Klient może wysłać treść żądania. Dotyczy to nagłówka „Expect: 100-continue”, za pomocą którego klient przed przesłaniem dużego pliku sprawdza, czy serwer go przyjmie.

Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Na żądanie klienta serwer zmienia protokół, na przykład z HTTP na WebSocket. Klient wysłał w tym celu nagłówek „Upgrade”.

Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer nadal przetwarza żądanie i jeszcze go nie zakończył. Kod pochodzi z WebDAV i zapobiega przekroczeniu limitu czasu przy długich operacjach. Jest uznawany za przestarzały i występuje bardzo rzadko.

Zdefiniowano w RFC 2518

Znaczenie

Serwer przesyła wstępne wskazówki, na przykład nagłówki „Link” dotyczące arkuszy stylów lub skryptów, przygotowując właściwą odpowiedź. Przeglądarka może już pobierać te pliki. To wskazówka, nie błąd.

Zdefiniowano w RFC 8297

Znaczenie

Żądanie zakończyło się powodzeniem. W przypadku GET odpowiedź zawiera żądany zasób, a w przypadku POST — wynik działania. To standardowa odpowiedź każdej działającej strony.

Do optymalizacji pod kątem wyszukiwarek: Kod 200 oznacza tylko, że serwer odpowiada, a nie że treść jest poprawna. Strona błędu zwracająca kod 200 to „Soft 404”, który wprowadza wyszukiwarki w błąd.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Żądanie zakończyło się powodzeniem i utworzono nowy zasób. Typowa odpowiedź na żądanie POST wysłane do API. Nagłówek „Location” wskazuje adres nowego zasobu.

Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer przyjął żądanie, ale jeszcze nie zakończył jego przetwarzania. Wynik udostępni później, na przykład przez sprawdzenie statusu lub webhook. Jest to typowe dla zadań wykonywanych w tle.

Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Żądanie zakończyło się powodzeniem, ale dane nie pochodzą bezpośrednio z serwera źródłowego, tylko z serwera proxy, który mógł je zmienić. Rzadko spotykany kod.

Zdefiniowano w RFC 9110

Znaczenie

Żądanie zakończyło się powodzeniem, ale odpowiedź celowo nie zawiera treści. Jest to typowe dla DELETE, PUT oraz żądań wstępnych CORS (OPTIONS). Jeśli odpowiedź ma zostać odczytana jako JSON, trzeba uwzględnić pustą treść.

Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Żądanie zakończyło się powodzeniem. Klient powinien zresetować widok, na przykład wyczyścić formularz. Odpowiedź nie zawiera treści. Kod jest rzadko używany.

Zdefiniowano w RFC 9110

Znaczenie

Serwer dostarcza tylko żądaną część pliku, ponieważ klient wysłał nagłówek „Range”. Stosowane przy strumieniowaniu wideo, wznawianiu pobierania i dużych plikach.

Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Odpowiedź zawiera w formacie XML kilka kodów statusu dla kilku operacji podrzędnych. Kod pochodzi z WebDAV i pojawia się przy synchronizacji kalendarzy, kontaktów oraz plików.

Zdefiniowano w RFC 4918

Znaczenie

Elementy powiązania WebDAV zostały już wymienione we wcześniejszej części tej samej odpowiedzi i nie są wymieniane ponownie. Bardzo rzadki przypadek.

Zdefiniowano w RFC 5842

Znaczenie

Serwer odpowiedział na żądanie przy użyciu kodowania delta: odpowiedź jest wynikiem jednej lub kilku modyfikacji bieżącego zasobu. W praktyce nieużywane.

Zdefiniowano w RFC 3229

Znaczenie

Na żądanie istnieje kilka możliwych odpowiedzi, na przykład ten sam plik w różnych formatach lub językach. Klient lub użytkownik powinien wybrać jedną z nich. W praktyce rzadko używane.

Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Trwałe przekierowanie: zasób ma nowy adres podany w nagłówku „Location”. Przeglądarki i wyszukiwarki powinny odtąd używać wyłącznie nowego adresu URL.

Typowe przyczyny

  • Przeniesienie domeny lub adresu URL, np. z http na https albo z www na domenę główną
  • Zmieniono nazwę strony lub przeniesiono ją
  • Zadziałała reguła przekierowania w nginx, Apache lub CMS

Jak rozwiążesz problem

  • Umieść bezpośredni link do docelowego adresu URL, aby przekierowanie nie było potrzebne.
  • Skróć łańcuchy przekierowań (A, B, C) do jednego kroku.
  • W przypadku pętli (ERR_TOO_MANY_REDIRECTS) sprawdź, czy reguły dla http/https oraz www nie są ze sobą sprzeczne. Często ustawienia serwera i CMS są niezgodne.
  • Przeglądarki przechowują przekierowania 301 bardzo długo. Testuj zmiany w oknie incognito lub za pomocą curl -I.

Konfiguracja i polecenia (przykłady)

nginx
return 301 https://example.com$request_uri;
Apache
Redirect 301 /alte-seite https://example.com/neue-seite
Do optymalizacji pod kątem wyszukiwarek: Kod 301 przenosi sygnały rankingowe ze starego adresu URL na nowy. Używaj go przy każdej trwałej zmianie adresu i unikaj łańcuchów przekierowań.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Tymczasowe przekierowanie: zasób jest chwilowo dostępny pod innym adresem. Klient powinien dla tego żądania podążyć za nagłówkiem „Location”, ale w przyszłości nadal używać pierwotnego URL. Niektórzy klienci zmieniają przy tym POST na GET.

Typowe przyczyny

  • Przekierowanie ograniczone czasowo, na przykład na czas kampanii lub prac konserwacyjnych
  • Przekierowanie do strony logowania
  • Przekierowanie według języka lub kraju
  • Ustawiono błędnie, mimo że przeniesienie jest trwałe

Jak rozwiążesz problem

  • W przypadku trwałego przeniesienia użyj kodu 301 lub 308, w przeciwnym razie wyszukiwarki zachowają stary URL.
  • Jeśli metoda ma zostać zachowana, użyj 307 (tymczasowo) lub 308 (na stałe).

Konfiguracja i polecenia (przykłady)

nginx
return 302 https://example.com/sommer-angebot;
Apache
Redirect 302 /angebot https://example.com/sommer-angebot
Do optymalizacji pod kątem wyszukiwarek: Przy kodzie 302 stary adres URL pozostaje w indeksie, dopóki przekierowanie jest uznawane za tymczasowe. Jeśli użyjesz go przy trwałym przeniesieniu strony, pozycje w wynikach wyszukiwania będą przenosić się powoli.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Przekierowanie z GET: klient powinien pobrać wynik pod innym adresem URL metodą GET. Stosowane zwykle po POST (Post/Redirect/Get), aby odświeżenie strony nie wysłało formularza ponownie.

Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Zasób nie zmienił się od ostatniego żądania. Serwer nie wysyła treści odpowiedzi, a przeglądarka korzysta z kopii w pamięci podręcznej. W tym celu wysłała nagłówek „If-None-Match” (ETag) lub „If-Modified-Since”. Oszczędza to przepustowość i przyspiesza ładowanie strony.

Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Tymczasowe przekierowanie podobne do 302, ale metoda HTTP i treść żądania pozostają bez zmian: POST pozostaje POST.

Typowe przyczyny

  • Chrome pokazuje w narzędziach deweloperskich „307 Internal Redirect” dla przekierowań HSTS z http na https, mimo że serwer niczego nie wysłał
  • Serwer tymczasowo przekierowuje żądanie API, zachowując jego metodę

Jak rozwiążesz problem

  • Jeśli przekierowanie ma być trwałe, użyj 308 zamiast 307.

Konfiguracja i polecenia (przykłady)

nginx
return 307 https://example.com$request_uri;
Apache
Redirect 307 /alt https://example.com/neu
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Przekierowanie trwałe jak 301, ale metoda HTTP i treść żądania pozostają bez zmian: POST pozostaje POST. Odpowiednie do trwałego przenoszenia API i formularzy, które nie mogą utracić danych.

Konfiguracja i polecenia (przykłady)

nginx
return 308 https://example.com$request_uri;
Apache
Redirect 308 /alt https://example.com/neu
Do optymalizacji pod kątem wyszukiwarek: Dla wyszukiwarek przekierowanie 308 działa jak 301 i przenosi pozycję w wynikach na nowy adres.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer nie rozumie żądania, ponieważ ma ono nieprawidłową strukturę: błędną składnię, uszkodzone nagłówki lub zbyt duży plik cookie. Z punktu widzenia serwera błąd leży po stronie klienta.

Typowe przyczyny

  • Nieprawidłowe znaki lub błędnie zakodowany adres URL, na przykład spacja albo % bez dwóch cyfr szesnastkowych
  • Zbyt duże lub uszkodzone pliki cookie; w nginx wyświetla się wtedy „Request Header Or Cookie Too Large”
  • Nieprawidłowe dane JSON w treści żądania lub brak wymaganych pól w API
  • Nieprawidłowe nagłówki Host lub Content-Length, często z powodu serwera proxy

Jak rozwiążesz problem

  • Usuń pliki cookie domeny w przeglądarce i odśwież stronę.
  • Sprawdź adres URL i zakoduj znaki specjalne, na przykład za pomocą URL Encoder.
  • Porównaj treść żądania z dokumentacją API.
  • W przypadku zbyt dużych nagłówków zwiększ rozmiar buforów serwera.

Konfiguracja i polecenia (przykłady)

nginx
large_client_header_buffers 4 16k;
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Żądanie wymaga prawidłowego uwierzytelnienia. Klient nie zalogował się lub jego dane dostępowe są nieprawidłowe. Serwer wysyła nagłówek „WWW-Authenticate” wskazujący wymaganą metodę. Nazwa kodu jest myląca: oznacza „nieuwierzytelniony”, a nie „brak uprawnień” (to kod 403).

Typowe przyczyny

  • Brak tokenu, hasła lub klucza API albo utrata ich ważności
  • Nieprawidłowy nagłówek Authorization, na przykład brak „Bearer” przed tokenem
  • Ochrona strony lub katalogu przez HTTP Basic (.htpasswd)

Jak rozwiążesz problem

  • Sprawdź dane logowania i datę wygaśnięcia tokenu.
  • Sprawdź format nagłówka Authorization.
  • W przypadku Basic Auth sprawdź użytkownika w pliku .htpasswd oraz ścieżkę do tego pliku w konfiguracji.

Konfiguracja i polecenia (przykłady)

nginx
auth_basic "Geschützter Bereich";
auth_basic_user_file /etc/nginx/.htpasswd;
Apache
AuthType Basic
AuthName "Geschützter Bereich"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Zarezerwowany dla przyszłych systemów płatności i nigdy nieujęty w standardzie. Niektóre usługi mimo to go używają, na przykład gdy subskrypcja wygasła lub trzeba opłacić limit API.

Jak rozwiążesz problem

  • Sprawdź status faktury lub subskrypcji u dostawcy.
  • Sprawdź dokumentację API usługi, w której określono znaczenie.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer rozumie żądanie, ale odmawia jego realizacji. W przeciwieństwie do kodu 401 ponowne zalogowanie zwykle nie pomoże: dostęp dla tej tożsamości lub z tego adresu jest niedozwolony.

Typowe przyczyny

  • Nieprawidłowe uprawnienia lub właściciel pliku: użytkownik serwera WWW nie może go odczytać
  • W katalogu brakuje dokumentu indeksowego, a wyświetlanie zawartości katalogu jest wyłączone
  • Blokada IP, reguła zapory sieciowej lub WAF albo blokada geograficzna
  • Reguła w pliku .htaccess lub konfiguracji nginx zabrania dostępu (deny all, Require all denied)
  • Moduł zabezpieczeń, taki jak ModSecurity lub Fail2ban, blokuje żądanie

Jak rozwiążesz problem

  • Sprawdź uprawnienia: katalogi zwykle 755, pliki 644, a właściciel zgodny z użytkownikiem serwera WWW. Kalkulator CHMOD przelicza wartości liczbowe.
  • Utwórz plik indeksowy (index.html, index.php) lub ustaw dyrektywę index.
  • Odczytaj dziennik błędów serwera WWW — znajduje się tam dokładna przyczyna, na przykład „directory index of … is forbidden”.
  • Sprawdź blokady adresów IP i reguły WAF.

Konfiguracja i polecenia (przykłady)

Shell
namei -l /var/www/html/index.html
nginx
index index.html index.php;
Apache
<Directory /var/www/html>
    Require all granted
</Directory>
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer jest dostępny, ale nie rozpoznaje żądanego adresu. Nie znaleziono zasobu. Serwer nie wskazuje, czy nigdy nie istniał, czy tylko chwilowo go brakuje.

Typowe przyczyny

  • Literówka lub nieaktualny link
  • Strona usunięta, przeniesiona lub przemianowana bez przekierowania
  • Nieprawidłowa ścieżka do dokumentów na serwerze WWW (root lub alias) albo nieprawidłowa wielkość liter — Linux ją rozróżnia
  • Brak reguł przepisywania adresów, na przykład dla bezpośrednich odnośników WordPressa lub aplikacji jednostronicowej
  • Plik nie został przesłany podczas wdrażania

Jak rozwiążesz problem

  • Sprawdź ścieżkę i nazwę pliku, uwzględniając wielkość liter.
  • Ustaw try_files w nginx, aby działały bezpośrednie odnośniki i aplikacje jednostronicowe: try_files $uri $uri/ /index.php?$args; lub /index.html.
  • Przekieruj przeniesione strony na nowe adresy kodem 301.
  • Skonfiguruj własną stronę błędu 404 z wyszukiwarką i linkami.

Konfiguracja i polecenia (przykłady)

nginx
error_page 404 /404.html;
Apache
ErrorDocument 404 /404.html
Do optymalizacji pod kątem wyszukiwarek: Pojedyncze strony 404 nie szkodzą pozycji w wynikach wyszukiwania. Ważne są strony z linkami zwrotnymi lub ruchem: przekieruj je kodem 301. Unikaj stron błędu zwracających kod 200 („Soft 404”).
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Zasób istnieje, ale nie obsługuje tej metody HTTP (GET, POST, PUT, DELETE itd.). Odpowiedź musi zawierać nagłówek „Allow” z dozwolonymi metodami.

Typowe przyczyny

  • Żądanie POST wysłane do ścieżki obsługującej tylko GET lub odwrotnie
  • nginx odpowiada kodem 405 na żądanie POST dotyczące pliku statycznego
  • Przekierowanie 301 lub 302 zmieniło żądanie POST w GET
  • Serwer WWW lub WAF blokuje metody takie jak PUT i DELETE

Jak rozwiążesz problem

  • Sprawdź nagłówek „Allow” — zawiera dozwolone metody.
  • Sprawdź trasę i kontroler w aplikacji.
  • Użyj 307 lub 308 zamiast 301 lub 302, jeśli metoda żądania ma zostać zachowana przy przekierowaniu.
  • Kieruj żądanie bezpośrednio na docelowy adres https, aby przekierowanie nie zmieniło metody.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer nie może dostarczyć odpowiedzi w formacie dopuszczonym przez klienta w nagłówku „Accept”, na przykład w określonym typie mediów, języku lub zestawie znaków. Ponadto niektóre zapory aplikacji internetowych (ModSecurity) blokują żądania z tym kodem.

Typowe przyczyny

  • Nagłówek Accept żąda na przykład wyłącznie application/xml, a serwer udostępnia tylko JSON
  • Reguła ModSecurity uznała żądanie za podejrzane, często dzieje się tak w przypadku skryptów bez nagłówka User-Agent

Jak rozwiążesz problem

  • Dostosuj nagłówek Accept lub go pomiń.
  • W przypadku ModSecurity odczytaj dziennik audytu i sprawdź regułę, która wywołała błąd.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Jak 401, ale uwierzytelnienia wymaga serwer proxy, a nie serwer docelowy. W tym celu serwer proxy wysyła nagłówek „Proxy-Authenticate”.

Typowe przyczyny

  • Firmowy lub szkolny serwer proxy wymaga zalogowania
  • Nieprawidłowe dane logowania do serwera proxy w ustawieniach systemu lub w curl

Jak rozwiążesz problem

  • Wpisz dane dostępowe do proxy, na przykład w curl za pomocą -x benutzer:passwort@proxy:port.
  • Zapytaj dział IT lub dostawcę proxy o prawidłowe dane logowania.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer zbyt długo czekał na kompletne żądanie klienta i zamknął połączenie.

Typowe przyczyny

  • Wolne lub niestabilne połączenie klienta
  • Przesyłanie dużego pliku zostaje przerwane
  • Proxy lub Load Balancer zbyt szybko zamyka połączenia
  • Przeglądarka otworzyła połączenie z wyprzedzeniem, ale nigdy go nie użyła

Jak rozwiążesz problem

  • Sprawdź połączenie i ponów żądanie.
  • Wydłuż limity czasu na serwerze.
  • W przypadku przesyłania plików zmniejsz ich rozmiar lub przesyłaj je partiami.

Konfiguracja i polecenia (przykłady)

nginx
client_header_timeout 60s;
client_body_timeout 60s;
Apache
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Żądanie koliduje z aktualnym stanem zasobu, na przykład wskutek równoczesnych zmian lub istnienia już danego wpisu. Klient może rozwiązać konflikt i spróbować ponownie.

Typowe przyczyny

  • Unikalna wartość już istnieje, na przykład adres e-mail, nazwa użytkownika lub nazwa domeny
  • Dwóch użytkowników zmienia ten sam zasób, więc wersja jest już nieaktualna
  • W obecnym stanie nie można zmienić ani usunąć zasobu

Jak rozwiążesz problem

  • Ponownie wczytaj aktualny stan i jeszcze raz wprowadź swoją zmianę.
  • Odczytaj treść odpowiedzi: dobrze zaprojektowane API dokładnie opisują w niej konflikt.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Zasób kiedyś istniał, ale został celowo usunięty i nie powróci. W przeciwieństwie do 404 serwer informuje w ten sposób, że zasób zniknął na stałe.

Typowe przyczyny

  • Treść została celowo usunięta, na przykład wygasła oferta
  • Reguła serwera zwraca kod 410 dla starych adresów URL

Jak rozwiążesz problem

  • Jeśli istnieje następca, zastosuj przekierowanie 301.
  • W przypadku usuniętych adresów URL, które nigdy nie wrócą, świadomie zwracaj kod 410.

Konfiguracja i polecenia (przykłady)

nginx
location = /alte-seite {
    return 410;
}
Apache
Redirect gone /alte-seite
Do optymalizacji pod kątem wyszukiwarek: Kodem 410 jasno informujesz wyszukiwarki, że strona została celowo usunięta. Google traktuje jednak kody 404 i 410 podobnie, więc różnica jest niewielka.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer wymaga nagłówka „Content-Length”, którego brakuje w żądaniu. Przyjmuje treść żądania tylko wtedy, gdy zna jej długość.

Typowe przyczyny

  • Klient wysyła treść żądania w częściach (chunked) do serwera, który tego nie obsługuje
  • Skrypt lub proxy pomija nagłówek

Jak rozwiążesz problem

  • Ustaw Content-Length lub użyj klienta HTTP, który automatycznie wysyła ten nagłówek.
  • Sprawdź ustawienia buforowania żądań w serwerze proxy.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Warunek w nagłówku żądania (If-Match, If-Unmodified-Since itd.) nie został spełniony. Serwer nie wprowadza więc zmiany. Zapobiega to nadpisaniu zmian.

Typowe przyczyny

  • Zasób zmienił się od czasu pobrania ETag przez klienta
  • Nieaktualny ETag w If-Match

Jak rozwiążesz problem

  • Ponownie wczytaj zasób, pobierz nowy ETag i jeszcze raz prześlij zmianę.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Treść żądania jest większa, niż akceptuje serwer. Zdarza się to często przy przesyłaniu plików. Ten kod nosił wcześniej nazwę „Payload Too Large”, a jeszcze wcześniej „Request Entity Too Large”.

Typowe przyczyny

  • nginx: domyślna wartość client_max_body_size wynosi zaledwie 1 MB
  • Apache: ustawiono LimitRequestBody
  • PHP: upload_max_filesize lub post_max_size ma zbyt małą wartość
  • Poprzedzający serwer CDN lub proxy ogranicza rozmiar

Jak rozwiążesz problem

  • Zwiększ limit w konfiguracji i ponownie wczytaj konfigurację serwera (nginx -s reload).
  • Zwiększ upload_max_filesize i post_max_size w php.ini. post_max_size musi być co najmniej tak duże jak upload_max_filesize.
  • Sprawdź każdy element łańcucha: CDN, proxy, serwer WWW i PHP. Obowiązuje najniższy limit.

Konfiguracja i polecenia (przykłady)

nginx
client_max_body_size 50M;
Apache
LimitRequestBody 52428800
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

URL jest dłuższy, niż serwer może przetworzyć. Zwykle oznacza to błąd aplikacji, a nie rzeczywisty adres.

Typowe przyczyny

  • Bardzo wiele parametrów w żądaniu GET
  • Pętla przekierowań przy każdym przebiegu dodaje kolejne parametry
  • Duże ilości danych są przesyłane przez URL zamiast przez POST

Jak rozwiążesz problem

  • Przesyłaj duże ilości danych metodą POST.
  • Usuń pętlę przekierowań.
  • W razie potrzeby zwiększ limit serwera.

Konfiguracja i polecenia (przykłady)

nginx
large_client_header_buffers 4 16k;
Apache
LimitRequestLine 16384
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer nie rozpoznaje formatu przesłanej treści żądania (nagłówek „Content-Type”). Na przykład obsługuje tylko JSON, a otrzymuje dane formularza.

Typowe przyczyny

  • Brakuje nagłówka Content-Type lub jest on nieprawidłowy, na przykład application/json zamiast text/plain
  • Serwer oczekuje multipart/form-data przy przesyłaniu plików

Jak rozwiążesz problem

  • Ustaw Content-Type odpowiednio do treści żądania.
  • Sprawdź dokumentację API.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Żądany zakres (nagłówek „Range”) wykracza poza plik. Serwer podaje rzeczywisty rozmiar w nagłówku „Content-Range”.

Typowe przyczyny

  • Pobieranie jest wznawiane od określonej pozycji, ale plik się zmniejszył lub został zastąpiony
  • Wadliwy menedżer pobierania

Jak rozwiążesz problem

  • Usuń częściowo pobrany plik i rozpocznij od nowa.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer nie może spełnić oczekiwania określonego w nagłówku „Expect”. Zwykle chodzi o „100-continue”, którego proxy lub serwer nie obsługuje.

Typowe przyczyny

  • Stary serwer proxy lub serwer bez obsługi Expect
  • curl automatycznie wysyła Expect: 100-continue przy dużych żądaniach POST

Jak rozwiążesz problem

  • Wyłącz nagłówek w curl za pomocą -H 'Expect:'.
  • Zaktualizuj serwer proxy.

Konfiguracja i polecenia (przykłady)

Shell
curl -H 'Expect:' -d @datei.json https://example.com/api
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Primaaprilisowy żart z RFC 2324 (Hyper Text Coffee Pot Control Protocol): czajnik odmawia parzenia kawy. Kod jest zarezerwowany i w praktyce służy jako żart lub do blokowania botów.

Zdefiniowano w RFC 2324

Znaczenie

Żądanie wysłano do serwera, który nie może odpowiedzieć dla tej kombinacji schematu i hosta. Występuje w HTTP/2, gdy przeglądarka używa ponownie jednego połączenia dla kilku nazw hostów.

Typowe przyczyny

  • Wiele domen na jednym adresie IP ze wspólnym certyfikatem, ale osobną konfiguracją dla każdego hosta
  • SNI i nagłówek Host są niezgodne

Jak rozwiążesz problem

  • Ujednolić certyfikaty i hosty wirtualne domen, których dotyczy problem.
  • Sprawdź za pomocą curl --resolve, który host odpowiada.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer rozumie żądanie i jego format jest prawidłowy, ale zawartość jest niepoprawna, na przykład brakuje wymaganego pola lub wartość wykracza poza dozwolony zakres. Wcześniej kod ten nosił nazwę „Unprocessable Entity”. Wiele frameworków używa go do sygnalizowania błędów walidacji.

Typowe przyczyny

  • Walidacja kończy się niepowodzeniem, na przykład z powodu formatu adresu e-mail, długości lub wymaganego pola
  • Błąd logiczny, na przykład data zakończenia wcześniejsza niż data rozpoczęcia

Jak rozwiążesz problem

  • Odczytaj treść odpowiedzi — znajdują się w niej pola i komunikaty o błędach.
  • Porównaj wprowadzone dane z dokumentacją API.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Zasób jest zablokowany, na przykład dlatego, że ktoś zarezerwował go do edycji przez WebDAV.

Jak rozwiążesz problem

  • Zwolnij blokadę (UNLOCK) lub poczekaj, aż inny użytkownik skończy.
Zobacz także:
Zdefiniowano w RFC 4918

Znaczenie

Żądanie nie powiodło się, ponieważ nie powiodło się inne żądanie, od którego było zależne. Kod pochodzi z WebDAV i jest używany również przez narzędzia do orkiestracji.

Zobacz także:
Zdefiniowano w RFC 4918

Znaczenie

Serwer nie chce przetworzyć żądania, które mogłoby zostać odtworzone (atak typu replay). Występuje to przy TLS 1.3 Early Data (0-RTT).

Zdefiniowano w RFC 8470

Znaczenie

Serwer wymaga innego protokołu, wskazanego w nagłówku „Upgrade”. Przykładem jest żądanie przez HTTP/1.1, gdy serwer wymaga TLS lub HTTP/2.

Typowe przyczyny

  • Przestarzała wersja TLS
  • API jest dostępne tylko przez WebSocket lub HTTPS

Jak rozwiążesz problem

  • Zaktualizuj klienta i bibliotekę.
  • Wyślij żądanie przez wymagany protokół.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer wymaga warunku (If-Match), aby zapobiec przypadkowemu nadpisaniu nieaktualnej wersji.

Typowe przyczyny

  • Żądanie PUT bez If-Match dotyczące chronionego zasobu

Jak rozwiążesz problem

  • Pobierz ETag zasobu i umieść go w nagłówku If-Match.
Zobacz także:
Zdefiniowano w RFC 6585

Znaczenie

Klient wysłał zbyt wiele żądań w określonym czasie (Rate Limiting). Nagłówek „Retry-After” wskazuje, kiedy może spróbować ponownie.

Typowe przyczyny

  • Przekroczono limit API lub logowań, na przykład z powodu pętli w skrypcie
  • Bot, crawler lub scraper generuje duże obciążenie
  • Uruchamia się ochrona przed atakami brute-force (Fail2ban, WAF)
  • Wielu użytkowników korzysta z jednego adresu IP (NAT, VPN) i jest liczonych łącznie

Jak rozwiążesz problem

  • Odczekaj czas określony w Retry-After i ponów próbę, stopniowo wydłużając odstępy (Exponential Backoff).
  • Grupuj żądania i buforuj odpowiedzi.
  • Jako operator: ustaw limity na IP lub klucz API i odpowiadaj kodem 429; nginx domyślnie używa 503.
  • Zezwól zaufanym robotom indeksującym na dostęp.

Konfiguracja i polecenia (przykłady)

nginx
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;

server {
    location /api/ {
        limit_req zone=api burst=20 nodelay;
        limit_req_status 429;
    }
}
Do optymalizacji pod kątem wyszukiwarek: Googlebot traktuje 429 jak błąd serwera i wolniej przeszukuje strony. Ustaw limity tak, aby nie wpływały stale na wyszukiwarki.
Zobacz także:
Zdefiniowano w RFC 6585

Znaczenie

Nagłówki żądania są zbyt duże łącznie lub pojedynczo. Najczęstszą przyczyną jest zbyt wiele plików cookie lub ich zbyt duży rozmiar.

Typowe przyczyny

  • Zgromadzone pliki cookie (śledzenie, sesje) w domenie
  • Bardzo długi nagłówek Authorization, na przykład duży JWT
  • Pętla przekierowań stale dodaje kolejne pliki cookie

Jak rozwiążesz problem

  • Usuń pliki cookie domeny.
  • Zwiększ bufory nagłówków serwera.
  • Zadbaj o niewielki rozmiar JWT i nagłówków.

Konfiguracja i polecenia (przykłady)

nginx
large_client_header_buffers 4 16k;
Apache
LimitRequestFieldSize 16384
Zobacz także:
Zdefiniowano w RFC 6585

Znaczenie

Kod specyficzny dla nginx, który nigdy nie trafia do klienta: nginx zamyka połączenie bez odpowiedzi. Pojawia się tylko w dzienniku dostępu. Administratorzy używają polecenia return 444;, aby odrzucać boty i żądania z nieprawidłowym hostem.

Typowe przyczyny

  • return 444; w konfiguracji nginx, na przykład na serwerze domyślnym

Jak rozwiążesz problem

  • Jeśli jest to zamierzone, nie musisz nic robić.
  • Jeśli jest to niezamierzone, sprawdź regułę poleceniem nginx -T i poszukaj return 444.

Konfiguracja i polecenia (przykłady)

nginx
server {
    listen 80 default_server;
    return 444;
}
Zobacz także:
Zdefiniowano w nginx

Znaczenie

Dostęp do zasobu zablokowano z przyczyn prawnych, np. na mocy orzeczenia sądu, z powodu cenzury lub blokady geograficznej. Kod nawiązuje do powieści Raya Bradbury’ego „Fahrenheit 451”.

Typowe przyczyny

  • Blokada na mocy nakazu, np. z powodu praw autorskich lub decyzji urzędu
  • Dostawca blokuje niektóre regiony ze względu na wymogi prawne

Jak rozwiążesz problem

  • Operator zwykle podaje przyczynę w treści odpowiedzi.
  • Zapytaj operatora – obejście blokady może być niezgodne z prawem.
Zobacz także:
Zdefiniowano w RFC 7725

Znaczenie

Klient zamknął połączenie, zanim nginx zdążył wysłać odpowiedź. Kod występuje tylko w logu nginx i nie jest rzeczywistym kodem HTTP.

Typowe przyczyny

  • Użytkownik przerywa ładowanie strony lub zamyka kartę
  • Limit czasu klienta jest krótszy niż czas odpowiedzi serwera
  • Load Balancer lub poprzedzający go proxy zbyt wcześnie zrywa połączenie

Jak rozwiążesz problem

  • Skróć czas odpowiedzi aplikacji, na przykład przy powolnych zapytaniach do bazy danych.
  • Dopasuj limity czasu klienta, proxy i serwera.
Zobacz także:
Zdefiniowano w nginx

Znaczenie

Ogólny błąd serwera: serwer napotkał nieoczekiwany problem i nie mógł obsłużyć żądania. Sam kod nie wskazuje, co poszło nie tak — przyczyna jest podana w dzienniku błędów.

Typowe przyczyny

  • Błąd w kodzie aplikacji, na przykład krytyczny błąd PHP lub nieprzechwycony wyjątek
  • Błędny plik .htaccess lub błędna konfiguracja serwera WWW
  • Nieprawidłowe uprawnienia do plików lub nieprawidłowy właściciel skryptów
  • Baza danych jest niedostępna lub dane dostępowe są nieprawidłowe
  • Osiągnięto limit pamięci PHP (memory_limit) lub limit max_execution_time
  • Brakuje rozszerzenia PHP lub wersja PHP jest niezgodna z wtyczką

Jak rozwiążesz problem

  • Odczytaj dziennik błędów: podano w nim plik i wiersz, w którym wystąpił błąd.
  • Cofnij zmiany z ostatnich minut (Plugin, Update, .htaccess).
  • Przetestuj konfigurację za pomocą nginx -t lub apachectl configtest.
  • Włączaj tryb debugowania (WP_DEBUG, APP_DEBUG) tylko lokalnie lub na krótko, nigdy na stałe w środowisku produkcyjnym.

Konfiguracja i polecenia (przykłady)

nginx
tail -n 50 /var/log/nginx/error.log
Apache
tail -n 50 /var/log/apache2/error.log
Do optymalizacji pod kątem wyszukiwarek: Przy długotrwałych błędach 5xx Googlebot odwiedza stronę rzadziej. Jeśli błąd utrzymuje się przez kilka dni, adresy URL mogą wypaść z indeksu.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer nie rozpoznaje metody użytej w żądaniu lub nie może jej obsłużyć. W odróżnieniu od kodu 405 nie chodzi o pojedynczy zasób, lecz o ogólny brak obsługi tej metody.

Typowe przyczyny

  • Nietypowa lub błędnie zapisana metoda HTTP
  • Serwer lub proxy nie obsługuje tej funkcji, na przykład z powodu starego oprogramowania

Jak rozwiążesz problem

  • Sprawdź używaną metodę.
  • Zaktualizuj oprogramowanie serwera.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer działający jako brama lub proxy (nginx, Apache, Load Balancer, CDN) otrzymał nieprawidłową odpowiedź od serwera docelowego albo nie otrzymał jej wcale. Błąd występuje między serwerami, a nie po stronie odwiedzającego.

Typowe przyczyny

  • Usługa backendowa (PHP-FPM, Node.js, Gunicorn, kontener Docker) nie działa lub uległa awarii
  • Nieprawidłowy serwer upstream: port lub gniazdo w proxy_pass albo fastcgi_pass jest nieprawidłowe
  • Backend przedwcześnie zamyka połączenie, na przykład z powodu problemów z pamięcią lub awarii
  • Zapora lub SELinux blokuje połączenie z backendem
  • CDN nie może prawidłowo połączyć się z serwerem źródłowym

Jak rozwiążesz problem

  • Sprawdź status usługi backendowej i uruchom ją ponownie (systemctl status, docker ps).
  • Sprawdź, czy pod adresem upstream nasłuchuje usługa (ss -tlnp).
  • Odczytaj dziennik błędów serwera WWW: komunikat „connect() failed (111: Connection refused) while connecting to upstream” wskazuje serwer docelowy.
  • Sprawdź ścieżkę gniazda i uprawnienia PHP-FPM.
  • Czy pamięci RAM jest wystarczająco dużo? OOM-killer często najpierw kończy proces backendu.

Konfiguracja i polecenia (przykłady)

Shell
ss -tlnp | grep :3000
nginx
tail -n 50 /var/log/nginx/error.log
Shell
dmesg | grep -i "out of memory"
Do optymalizacji pod kątem wyszukiwarek: Krótkotrwały błąd 502 niemal nie wpływa na wyszukiwarki. Jeśli się utrzymuje, Googlebot traktuje stronę jak przy każdym innym błędzie 5xx i rzadziej ją przeszukuje.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer chwilowo nie może przetworzyć żądania, zwykle z powodu przeciążenia lub prac konserwacyjnych. Może podać w nagłówku „Retry-After”, kiedy ponowienie żądania będzie możliwe.

Typowe przyczyny

  • Tryb konserwacji, na przykład WordPress lub Laravel, albo zaplanowane prace konserwacyjne
  • Przeciążenie: zbyt wiele jednoczesnych żądań lub procesów, na przykład osiągnięto limit pm.max_children w PHP-FPM
  • Usługa backendowa za serwerem proxy lub Load Balancerem jest niedostępna
  • nginx domyślnie odpowiada kodem 503 po przekroczeniu limitów limit_req i limit_conn
  • Osiągnięto limity zasobów hostingu (CPU, RAM, procesy)

Jak rozwiążesz problem

  • Wyłącz tryb konserwacji. Sprawdź, czy istnieje plik .maintenance (WordPress) lub czy użyto polecenia php artisan down (Laravel).
  • Sprawdź obciążenie (top, free -m) i zwiększ limity procesów, takie jak pm.max_children.
  • Podczas planowanej konserwacji celowo zwracaj kod 503 z nagłówkiem Retry-After.
  • Sprawdź log serwera WWW pod kątem błędów upstream.

Konfiguracja i polecenia (przykłady)

nginx
error_page 503 /wartung.html;

location / {
    return 503;
}

location = /wartung.html {
    root /var/www/wartung;
    internal;
    add_header Retry-After 3600 always;
}
Apache
ErrorDocument 503 /wartung.html
Header always set Retry-After "3600"

RewriteEngine On
RewriteCond %{REQUEST_URI} !=/wartung.html
RewriteRule ^ - [R=503,L]
Do optymalizacji pod kątem wyszukiwarek: Krótkotrwały błąd 503 z nagłówkiem Retry-After to właściwe rozwiązanie dla wyszukiwarek podczas prac konserwacyjnych. Jeśli trwa kilka dni, adresy URL mogą wypaść z indeksu.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Brama lub proxy nie otrzymały na czas odpowiedzi od serwera docelowego. W przeciwieństwie do błędu 502 odpowiedź nie jest nieprawidłowa — przychodzi zbyt późno.

Typowe przyczyny

  • Wolno działająca aplikacja: złożone zapytanie do bazy danych, raport, import lub zewnętrzne wywołanie API
  • Backend jest przeciążony, wszystkie procesy PHP-FPM są zajęte
  • Wartości limitu czasu proxy są krótsze niż czas trwania żądania
  • Problem z siecią między proxy a serwerem backendowym

Jak rozwiążesz problem

  • Znajdź wolne zapytania i skrypty oraz je przyspiesz (Slow Query Log, Profiler).
  • Przenieś długotrwałe zadania do procesów działających w tle.
  • Odpowiednio zwiększ limity czasu: proxy_read_timeout, fastcgi_read_timeout i max_execution_time w PHP.
  • Sprawdź zasoby backendu (procesy robocze, pamięć RAM).

Konfiguracja i polecenia (przykłady)

nginx
proxy_read_timeout 120s;
fastcgi_read_timeout 120s;
Apache
ProxyTimeout 120
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Serwer nie obsługuje wersji HTTP użytej w żądaniu.

Typowe przyczyny

  • Bardzo stary lub wadliwy klient albo proxy używa nietypowej wersji HTTP
  • System docelowy obsługuje tylko określoną wersję

Jak rozwiążesz problem

  • Zaktualizuj klienta lub wymuś HTTP/1.1; w curl służy do tego --http1.1.
Zobacz także:
Zdefiniowano w RFC 9110

Znaczenie

Konfiguracja serwera dotycząca negocjacji treści jest błędna: wybrany wariant ponownie wskazuje na negocjację. W praktyce występuje to tylko przy błędnej konfiguracji.

Zobacz także:
Zdefiniowano w RFC 2295

Znaczenie

Serwer nie ma wystarczającej ilości miejsca na dysku, aby zrealizować żądanie.

Typowe przyczyny

  • Dysk twardy jest pełny albo wyczerpano limit miejsca lub inodów
  • Nie można już zapisać przesłanego pliku

Jak rozwiążesz problem

  • Sprawdź miejsce na dysku za pomocą df -h i df -i oraz usuń stare logi, Backupy i pliki pamięci podręcznej.
  • Zwiększ przydział.

Konfiguracja i polecenia (przykłady)

Shell
df -h && df -i
Zobacz także:
Zdefiniowano w RFC 4918

Znaczenie

Serwer wykrył pętlę nieskończoną podczas przetwarzania.

Typowe przyczyny

  • Cykliczne powiązanie WebDAV
  • Struktura katalogów z pętlą dowiązań symbolicznych

Jak rozwiążesz problem

  • Sprawdź powiązania i dowiązania symboliczne.
Zobacz także:
Zdefiniowano w RFC 5842

Znaczenie

Żądanie nie zawiera rozszerzenia wymaganego przez serwer zgodnie z RFC 2774. Ten kod ma znaczenie historyczne i praktycznie się nie pojawia.

Zdefiniowano w RFC 2774

Znaczenie

Klient musi zalogować się do sieci, zanim uzyska dostęp. Kod jest wysyłany przez portal dostępowy, na przykład w sieci Wi-Fi hotelu, lotniska lub kawiarni.

Typowe przyczyny

  • Portal logowania w sieci Wi-Fi wymaga zalogowania lub wyrażenia zgody

Jak rozwiążesz problem

  • Otwórz dowolną stronę przez http, na przykład http://neverssl.com, aby wyświetlić portal.
  • Zaloguj się do portalu.
Zobacz także:
Zdefiniowano w RFC 6585

Znaczenie

Cloudflare otrzymał z serwera źródłowego odpowiedź, której nie może przetworzyć: pustą, przerwaną lub z nieprawidłowymi nagłówkami. To ogólny błąd Cloudflare.

Typowe przyczyny

  • Serwer źródłowy ulega awarii podczas obsługi żądania, na przykład z powodu błędu PHP
  • Nagłówki odpowiedzi przekraczają 32 KB, często z powodu zbyt wielu plików cookie
  • Odpowiedź jest pusta lub połączenie zostało zamknięte bez odpowiedzi
  • Zapora częściowo blokuje adresy IP Cloudflare

Jak rozwiążesz problem

  • Odczytaj dziennik błędów serwera źródłowego.
  • Dopuść zakresy adresów IP Cloudflare w zaporze sieciowej i Fail2ban.
  • Zmniejsz rozmiar nagłówków i plików cookie.
Zobacz także:
Zdefiniowano w Cloudflare

Znaczenie

Cloudflare nie mógł nawiązać połączenia z serwerem źródłowym: serwer odrzucił połączenie. Strona i Cloudflare są dostępne, ale twój serwer za nimi nie.

Typowe przyczyny

  • Serwer WWW (nginx, Apache) nie działa
  • Zapora lub dostawca hostingu blokuje adresy IP Cloudflare
  • Nieprawidłowy źródłowy adres IP lub port w ustawieniach Cloudflare

Jak rozwiążesz problem

  • Uruchom serwer WWW i sprawdź, czy nasłuchuje na portach 80 i 443.
  • Dopuść zakresy adresów IP Cloudflare.
  • Sprawdź rekord DNS A i port serwera źródłowego.

Konfiguracja i polecenia (przykłady)

Shell
ss -tlnp | grep -E ':(80|443)\b'
Zobacz także:
Zdefiniowano w Cloudflare

Znaczenie

Cloudflare próbował połączyć się z serwerem źródłowym, ale uzgadnianie TCP nie zakończyło się na czas. Limit czasu połączenia upłynął jeszcze przed wysłaniem żądania.

Typowe przyczyny

  • Serwer źródłowy jest przeciążony lub niedostępny
  • Zapora odrzuca pakiety od Cloudflare
  • Nieprawidłowy adres IP lub problem z routingiem

Jak rozwiążesz problem

  • Sprawdź dostępność i obciążenie serwera.
  • Dopuść zakresy adresów IP Cloudflare w zaporze sieciowej.
  • Sprawdź adres IP w rekordzie DNS.
Zobacz także:
Zdefiniowano w Cloudflare

Znaczenie

Cloudflare nie może połączyć się z serwerem źródłowym, na przykład z powodu błędu DNS lub braku trasy.

Typowe przyczyny

  • Nieprawidłowy adres IP w rekordzie DNS
  • Serwer lub centrum danych jest offline albo występuje problem z routingiem

Jak rozwiążesz problem

  • Sprawdź rekord DNS.
  • Skontaktuj się z dostawcą hostingu i sprawdź sieć.
Zobacz także:
Zdefiniowano w Cloudflare

Znaczenie

Cloudflare nawiązał połączenie, ale serwer źródłowy nie przesłał odpowiedzi HTTP w ciągu 100 sekund.

Typowe przyczyny

  • Długie skrypty, eksporty lub importy
  • Przeciążony serwer

Jak rozwiążesz problem

  • Przenieś długotrwałe zadania do procesów działających w tle.
  • Skróć czas odpowiedzi.
  • Przy długich zadaniach używaj strumieniowania lub sprawdzania statusu zamiast jednego żądania.
Zobacz także:
Zdefiniowano w Cloudflare

Znaczenie

Uzgadnianie połączenia TLS między Cloudflare a serwerem źródłowym nie powiodło się.

Typowe przyczyny

  • Serwer źródłowy nie udostępnia HTTPS na porcie 443
  • Brak wspólnego zestawu szyfrów lub wersji TLS
  • Brak SNI lub niezgodny certyfikat

Jak rozwiążesz problem

  • Sprawdź konfigurację TLS serwera źródłowego.
  • Wybierz tryb SSL/TLS w Cloudflare odpowiedni dla serwera źródłowego.
Zobacz także:
Zdefiniowano w Cloudflare

Znaczenie

Cloudflare nie mógł zweryfikować certyfikatu serwera źródłowego. Występuje w trybie „Full (strict)”.

Typowe przyczyny

  • Certyfikat wygasły, samopodpisany lub niewystawiony dla tej domeny
  • Brak certyfikatu pośredniego

Jak rozwiążesz problem

  • Zainstaluj ważny certyfikat (Let's Encrypt lub Cloudflare Origin Certificate).
  • Przesyłaj pełny łańcuch certyfikatów.
Zobacz także:
Zdefiniowano w Cloudflare

Przykładowy wynik

Co pokazuje ci zestawienie kodów statusu HTTP

Wpisz numer lub słowo kluczowe, aby od razu znaleźć pasujące kody statusu wraz z ich znaczeniem, typowymi przyczynami, rozwiązaniem oraz — tam, gdzie to możliwe — gotowym przykładem dla nginx lub Apache. Trzy przykłady:

Przykład 1: wyszukiwanie numeru

Dane wejściowe:

502

Wynik: wpis z tymi danymi

Kod statusu i nazwa
502 Bad Gateway
Klasa
5xx Błąd serwera
Znaczenie
Serwer działający jako brama lub proxy (nginx, Apache, Load Balancer, CDN) otrzymał nieprawidłową odpowiedź od serwera docelowego albo nie otrzymał jej wcale. Błąd występuje między serwerami, a nie po stronie odwiedzającego.
Pierwsza typowa przyczyna
Usługa backendowa (PHP-FPM, Node.js, Gunicorn, kontener Docker) nie działa lub uległa awarii
Pierwszy krok rozwiązania
Sprawdź status usługi backendowej i uruchom ją ponownie (systemctl status, docker ps).
Przykład do skopiowania (nginx)
tail -n 50 /var/log/nginx/error.log

Wynik słownie: przy błędzie 502 Bad Gateway serwer za serwerem proxy nie odpowiada lub zwraca nieprawidłową odpowiedź. Wpis wymienia 5 typowych przyczyn i 5 kroków rozwiązania problemu, na przykład sprawdzenie usługi backendowej i dziennika błędów. Błąd występuje między serwerami, a nie po stronie odwiedzającego.

Przykład 2: wyszukiwanie klasy

Dane wejściowe:

3xx

Wynik: wszystkie kody klasy 3xx z listy

Wyniki wyszukiwania dla 3xx
Kod statusuNazwa
300Multiple Choices
301Moved Permanently
302Found
303See Other
304Not Modified
307Temporary Redirect
308Permanent Redirect

Wynik w słowach: Lista zawiera 7 kodów klasy 3xx, brakuje przestarzałych 305 i 306. Nie każdy z nich przekierowuje, na przykład 304 odsyła do pamięci podręcznej. Najważniejsze to 301 (trwałe przeniesienie), 302 (tymczasowe przekierowanie) i 304 (bez zmian, użyj pamięci podręcznej). Każdy wpis wyjaśnia, kiedy występuje i jak go prawidłowo stosować.

Przykład 3: wyszukiwanie słowa kluczowego

Dane wejściowe:

timeout

Wynik: najtrafniejsze rezultaty na początku

  1. 408 Request Timeout
  2. 504 Gateway Timeout
  3. 524 A Timeout Occurred

Wynik słownie: 3 wpisów zawiera szukane hasło. Na górze są trafienia w nazwie: 408 Request Timeout, 504 Gateway Timeout, 524 A Timeout Occurred. Dalej znajdują się wpisy, w których „timeout” występuje tylko w objaśnieniu, przyczynach lub przykładach konfiguracji.

Jak to działa

Jak sprawdzisz kod statusu

Cztery kroki od numeru do gotowego przykładu – bez konta i pobierania.

Krok 1

Wpisz kod statusu lub słowo kluczowe

Wpisz w wyszukiwarce numer, np. 502, nazwę, np. „bad gateway”, albo słowo kluczowe, np. „timeout” lub „przekierowanie”. Wyniki pojawiają się na bieżąco podczas pisania.

Krok 2

Filtruj według klasy

Filtrami ograniczysz wyniki do jednej klasy: 3xx — przekierowania, 4xx — błędy klienta, 5xx — błędy serwera. „Często wyszukiwane” pokazuje kody, które spotykasz na co dzień.

Krok 3

Rozwiń wpis

Kliknij kod, aby zobaczyć jego znaczenie oraz, zależnie od kodu, typowe przyczyny, sposoby rozwiązania problemu i wpływ na SEO. Sekcja „Zobacz też” prowadzi do powiązanych kodów.

Krok 4

Kopiuj i dostosuj przykład

Tam, gdzie to pomocne, dołączono przykład dla nginx, Apache lub powłoki. Skopiuj go, dostosuj ścieżki i wartości do swojego serwera, a następnie ponownie załaduj serwer WWW.

Częste błędy

404, 403, 500, 502, 503: najczęstsze błędy HTTP w skrócie

Krótka odpowiedź dotycząca każdego kodu błędu. Aby otworzyć pełny wpis w powyższym zestawieniu, kliknij „Wszystkie przyczyny i rozwiązania”.

400

Bad Request

Serwer nie rozumie żądania. Częste przyczyny to błędny adres, zbyt duże lub uszkodzone pliki cookie oraz nieprawidłowy nagłówek żądania. Usuń pliki cookie strony i sprawdź adres.

Wszystkie przyczyny i rozwiązanie

401

Unauthorized

Ta strona wymaga zalogowania, a twoje dane logowania są nieobecne lub nieprawidłowe. Dostęp będzie możliwy po podaniu poprawnych danych, na przykład hasła do strony chronionej przez .htaccess lub tokenu do API.

Wszystkie przyczyny i rozwiązanie

403

Forbidden

Serwer rozpoznaje adres, ale odmawia Ci dostępu. Częste przyczyny to nieprawidłowe uprawnienia do plików, brak pliku indeksowego, blokada IP lub reguła zapory sieciowej.

Wszystkie przyczyny i rozwiązanie

404

Not Found

Pod tym adresem nic nie ma: przyczyną może być literówka, usunięcie lub przeniesienie strony albo nieprawidłowa wielkość liter. Przeniesione strony przekieruj kodem 301. Pojedyncze błędy 404 nie szkodzą pozycji w wynikach wyszukiwania.

Wszystkie przyczyny i rozwiązanie

429

Too Many Requests

Wysłałeś zbyt wiele żądań w krótkim czasie. Odczekaj czas wskazany w nagłówku Retry-After, a następnie spróbuj ponownie, stopniowo wydłużając odstępy.

Wszystkie przyczyny i rozwiązanie

500

Internal Server Error

Ogólny błąd serwera. Przyczyna jest podana w dzienniku błędów serwera WWW. Często odpowiada za niego błąd w kodzie, uszkodzony plik .htaccess, nieprawidłowe uprawnienia lub niedostępna baza danych.

Wszystkie przyczyny i rozwiązanie

502

Bad Gateway

Proxy lub moduł równoważenia obciążenia nie otrzymuje prawidłowej odpowiedzi z backendu, zwykle dlatego, że PHP-FPM, Node.js lub serwer aplikacji nie działa albo uległ awarii. Sprawdź usługę i jej log.

Wszystkie przyczyny i rozwiązanie

503

Service Unavailable

Serwer jest przeciążony lub przechodzi prace konserwacyjne i informuje, że to stan przejściowy. Przy pracach konserwacyjnych właściwy jest kod 503 z nagłówkiem Retry-After.

Wszystkie przyczyny i rozwiązanie

504

Gateway Timeout

Backend odpowiada zbyt wolno, więc proxy przerywa oczekiwanie. Sprawdź powolne zapytania lub skrypty i w razie potrzeby zwiększ limit czasu, a w nginx — proxy_read_timeout.

Wszystkie przyczyny i rozwiązanie

Przegląd

Pięć klas kodów odpowiedzi HTTP

Pierwsza cyfra wskazuje rodzaj problemu. Dzięki niej bez sprawdzania rozpoznasz, czy błąd leży po stronie odwiedzającego, czy serwera.

1xx

Informacje

Żądanie dotarło i jest nadal przetwarzane. To komunikat pośredni, jeszcze nie wynik.

Często:

4 kodów w tej dokumentacji

2xx

Sukces

Żądanie zostało zrozumiane i pomyślnie przetworzone. 200 to standardowy przypadek.

Często: 200, 201, 204

10 kodów w tej dokumentacji

3xx

Przekierowanie

Klient musi wykonać dodatkowy krok — zwykle przejść pod nowy adres lub użyć pamięci podręcznej.

Często: 301, 302, 304, 307, 308

7 kodów w tej dokumentacji

4xx

Błąd klienta

Żądanie jest nieprawidłowe lub niedozwolone. Z punktu widzenia serwera błąd leży po stronie klienta, na przykład 404 przy nieznanym adresie.

Często: 400, 401, 403, 404, 405, 410, 413, 422, 429

31 kodów w tej dokumentacji

5xx

Błąd serwera

Żądanie było poprawne, ale serwer go nie zrealizował. Błąd leży po stronie operatora, np. 500, 502 lub 503.

Często: 500, 502, 503, 504

18 kodów w tej dokumentacji

Przekierowania

301 czy 302? Porównanie kodów przekierowań

Pięć kodów oznacza przekierowanie. Różnią się pod dwoma względami: czy przekierowanie jest trwałe i czy klient zachowuje metodę HTTP.

Porównanie kodów statusu przekierowania 301, 302, 303, 307 i 308
Kod statusuCzas trwaniaMetoda pozostaje bez zmian
301 Moved PermanentlyPrzeniesienie strony lub domeny, przekierowanie z http na https oraz z www na domenę główną. Standard w SEO.na stałebez gwarancji
302 FoundPrzekierowanie ograniczone czasowo, na przykład na potrzeby kampanii, logowania lub wyboru języka.tymczasowobez gwarancji
303 See OtherPrzekierowanie na stronę wyników po żądaniu POST (Post/Redirect/Get). Przeglądarka pobiera ją przez GET.tymczasowobez gwarancji
307 Temporary RedirectTymczasowe przekierowanie API lub formularza, w którym metoda musi zostać zachowana.tymczasowotak
308 Permanent RedirectTrwałe przeniesienie API lub punktu docelowego formularza, przy którym metoda musi zostać zachowana.na stałetak

Praktyczna zasada: 301 dla zwykłych stron przeniesionych na stałe, 302 dla przeniesień tymczasowych. Jeśli API lub formularz ma zachować metodę POST, użyj 308 zamiast 301 i 307 zamiast 302. „Brak gwarancji” oznacza, że przeglądarki często zamieniają POST na GET.

Praktyka

Jak sprawdzisz kod statusu strony

W przeglądarce możesz otworzyć narzędzia deweloperskie (F12), a na karcie „Sieć” sprawdzić kod każdego żądania. Na serwerze lub w powłoce przydadzą się te cztery polecenia:

Wyświetla tylko nagłówki odpowiedzi; pierwszy wiersz zawiera kod statusu.

curl -I https://example.com/seite

Zwraca wyłącznie kod statusu — przydatne w skryptach i monitoringu.

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

Śledzi przekierowania i pokazuje każdy etap wraz z kodem statusu i adresem docelowym.

curl -sIL https://example.com/alt | grep -iE '^(HTTP|location)'

Liczy kody statusu w logu dostępu nginx lub Apache (format combined) i sortuje je według częstotliwości.

awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn

Odkryj więcej

Więcej narzędzi

FAQ

Często zadawane pytania

Krótkie odpowiedzi na pytania o najczęstsze kody HTTP, ich przyczyny i tę listę.

Kod statusu HTTP to trzycyfrowa liczba zwracana przez serwer w odpowiedzi na każde żądanie. Informuje, czy żądanie się powiodło, a jeśli nie — dlaczego. Pierwsza cyfra określa klasę: 1xx — informacje, 2xx — powodzenie, 3xx — przekierowanie, 4xx — błąd klienta, 5xx — błąd serwera. Kody błędów HTTP, z którymi najczęściej się spotkasz, to 400, 401, 403, 404 i 429 po stronie klienta oraz 500, 502, 503 i 504 po stronie serwera. Filtr „Często wyszukiwane” pokazuje je wraz z innymi kodami często spotykanymi w praktyce.

200 OK oznacza, że żądanie się powiodło, a serwer zwraca stronę lub dane. To standardowa odpowiedź dla stron przeznaczonych dla odwiedzających i wyszukiwarek. Upewnij się, że strony błędów nie zwracają kodu 200 — inaczej powstają tzw. „Soft 404”. Powiązane kody: 201 Created oznacza nowo utworzony zasób, 204 No Content — pomyślną odpowiedź bez treści, a 304 Not Modified — że plik się nie zmienił i przeglądarka korzysta ze swojej kopii.

Serwer nie rozumie żądania i odrzuca je przed przetworzeniem. Typowe przyczyny to błędny adres z niedozwolonymi znakami, zbyt duże lub uszkodzone pliki cookie, zbyt duży nagłówek oraz nieprawidłowo sformatowana treść żądania API. Jako odwiedzający usuń pliki cookie strony. Jeśli zarządzasz stroną, sprawdź żądanie, nagłówki i dziennik. Gdy format jest poprawny, ale wartość nieprawidłowa — na przykład brakuje wymaganego pola — wiele API zwraca zamiast tego kod 422 Unprocessable Content (dawniej „Unprocessable Entity”).

Serwer jest dostępny, ale nie rozpoznaje adresu. Najpierw sprawdź literówki oraz wielkość liter w nazwie pliku, ponieważ Linux je rozróżnia. Następnie sprawdź ścieżkę na serwerze WWW oraz reguły przepisywania adresów w WordPress lub aplikacji jednostronicowej (w nginx: try_files). Przeniesione strony przekieruj kodem 301. Pojedyncze błędy 404 nie szkodzą pozycji w wynikach wyszukiwania, ale ważne strony z linkami zwrotnymi prowadzącymi donikąd już tak.

401 Unauthorized oznacza „brak uwierzytelnienia”: po podaniu prawidłowych danych logowania dostęp jest możliwy. 403 Forbidden oznacza „dostęp zabroniony niezależnie od zalogowania”: serwer odmawia dostępu. Częste przyczyny 403 to nieprawidłowe uprawnienia lub właściciel plików, brak pliku indeksowego, blokady IP i reguły WAF. Kalkulator CHMOD przelicza uprawnienia, takie jak 755 dla katalogów i 644 dla plików. Przejdź do kalkulatora CHMOD

Kod nie wskazuje przyczyny. Znajduje się ona w logu błędów serwera WWW (dla nginx: /var/log/nginx/error.log, dla Apache: /var/log/apache2/error.log) lub w logu PHP. Częste przyczyny to błąd w kodzie, wadliwy plik .htaccess, nieprawidłowe uprawnienia do plików, niedostępna baza danych lub wyczerpany limit pamięci PHP. Cofnij ostatnią zmianę (Plugin, aktualizację, regułę) i sprawdź konfigurację poleceniem nginx -t lub apachectl configtest.

502 Bad Gateway: serwer proxy otrzymuje od backendu nieprawidłową odpowiedź lub nie otrzymuje jej wcale, zwykle dlatego, że usługa (PHP-FPM, Node.js) nie działa. 503 Service Unavailable: serwer jest przeciążony lub trwa konserwacja i sam to sygnalizuje. 504 Gateway Timeout: backend odpowiada, ale zbyt wolno, zwykle z powodu wymagającego zapytania lub przeciążenia. W każdym z tych przypadków zacznij od sprawdzenia dziennika błędów i usługi backendowej. Przy planowanej konserwacji właściwy jest kod 503 z nagłówkiem „Retry-After”, a nie strona informacyjna zwracająca kod 200.

301 sygnalizuje trwałe przeniesienie: wyszukiwarki uwzględniają nowy adres i przenoszą na niego pozycję w wynikach. 302 sygnalizuje przekierowanie tymczasowe: stary adres pozostaje w indeksie. Stosuj 301 przy przenoszeniu domen i stron, a 302 w sytuacjach tymczasowych, takich jak kampanie. Jeśli metoda (POST) formularza lub API ma zostać zachowana, użyj 308 zamiast 301 oraz 307 zamiast 302.

To nie są kody ze standardu HTTP. Kody od 520 do 526 pochodzą od Cloudflare i oznaczają, że to Cloudflare, a nie odwiedzający Twoją stronę, ma problem z Twoim serwerem źródłowym: 520 — nieznany błąd, 521 — połączenie odrzucone, 522 — nie udało się nawiązać połączenia, 523 — serwer źródłowy nieosiągalny, 524 — brak odpowiedzi w ciągu 100 sekund, 525 — nieudane uzgadnianie TLS, 526 — nieprawidłowy certyfikat. Zwykle pomaga dopuszczenie zakresów adresów IP Cloudflare w zaporze oraz sprawdzenie serwera WWW i certyfikatu. Kody 444 i 499 występują tylko w dzienniku nginx: przy 444 nginx celowo zamyka połączenie bez odpowiedzi, a przy 499 klient zamknął połączenie przed otrzymaniem odpowiedzi.

W przeglądarce otwórz narzędzia deweloperskie klawiszem F12 i sprawdź kolumnę „Status” na karcie „Sieć”. W powłoce polecenie curl -I https://example.com wyświetli nagłówki wraz z kodem statusu, a curl -s -o /dev/null -w "%{http_code}" https://example.com zwróci tylko liczbę. Dzięki curl -sIL zobaczysz też każde przekierowanie po drodze. Ta lista nie wysyła zapytań pod żadne adresy: działa w całości w twojej przeglądarce. W pasku adresu zapisują się tylko wyszukiwane hasło i filtr klas, dzięki czemu możesz udostępnić wyniki wyszukiwania. Łańcuch przekierowań sprawdzisz narzędziem Redirect Checker. Przejdź do Redirect Checker

Masz dodatkowe pytania?

Kontakt z pomocą techniczną
Prowadzisz właśnie własny projekt?

Kod statusu 200 zamiast 502: hosting, który niezawodnie udostępnia twoją aplikację

VPS na ZAP-Hosting zapewnia niezawodne działanie twojej aplikacji lub twojego projektu online.

4,4/5 Trustpilot32.000+ Aktywne serweryOd 2010 roku

Bez konfiguracji. Bez ryzyka. Online w kilka sekund.

Elastyczny okres obowiązywaniaAnuluj w dowolnym momencieOnline w 60 sekund

Szukasz więcej narzędzi? Zobacz wszystkie narzędzia dla programistów