Powrót do bloga

Rozwiązywanie problemów z typowymi kodami błędów HTTP

Rozwiązywanie problemów z typowymi kodami błędów HTTP

Każdy serwer WWW odbierający HTTP żądanie odpowiada kodem statusu HTTP. Kody te są krótkimi notatkami z serwera opisującymi sytuację. Nie zawierają one żadnej rzeczywistej zawartości strony. Zamiast tego są raportem o tym, jak potoczyły się sprawy po odebraniu żądania HTTP. W wielu sytuacjach kody te są ważne dla diagnozowania różnych problemów z serwerem/klientem.

Kody te są trzycyfrowymi liczbami całkowitymi, z których każda oznacza różne statusy. Na podstawie pierwszej cyfry kody HTTP są podzielone na pięć kategorii:

  • Odpowiedzi informacyjne: Wartość mieści się w przedziale od 100 do 199. Informuje o tym, że żądanie zostało odebrane i jest przetwarzane.

  • Pomyślne odpowiedzi: Wartość mieści się w przedziale od 200 do 299. Oznacza to, że akcja została odebrana, zrozumiana i pomyślnie zaakceptowana.

  • Komunikaty przekierowania: Wartość mieści się w przedziale od 300 do 399. Oznacza to, że do sfinalizowania żądania niezbędne są dalsze działania.

  • Odpowiedzi błędów klienta: Wartość mieści się w przedziale od 400 do 499. Żądanie zawiera niepoprawną składnię lub nie może zostać zrealizowane.

  • Odpowiedzi błędów serwera: Wartość mieści się w przedziale od 500 do 599. Oznacza to, że serwer nie zdołał przetworzyć prawidłowego żądania.

W tym poradniku omówimy niektóre z najczęstszych kodów błędów HTTP, z którymi spotyka się każdy (4xx i 5xx), z perspektywy administratora systemu. Liczne sytuacje mogą prowadzić do tego, że serwer WWW odpowie określonym kodem. Ponadto w tym samouczku omówione zostaną potencjalne przyczyny i rozwiązania.

Błędy klienta a błędy serwera

Kody błędów od 400 do 499 wynikają z klienta użytkownika (przeglądarki internetowej lub dowolnego klienta HTTP). Chociaż błędy te są głównie związane z klientem, przydatna jest wiedza, z jakim kodem boryka się użytkownik. Może to pomóc w ustaleniu, czy potencjalny problem leży po stronie serwera.

Z kolei błędy serwera (kod statusu HTTP od 500 do 599) występują, gdy serwer jest świadomy, że wystąpił błąd, lub nie jest w stanie przetworzyć żądania.

Ogólne rozwiązywanie problemów

Niezależnie od błędu, oto kilka ogólnych wskazówek dotyczących rozwiązywania problemów, które należy przetestować w pierwszej kolejności w przypadku napotkania dowolnego kodu błędu HTTP:

  • Podczas korzystania z przeglądarki internetowej do testowania serwera dobrą praktyką jest odświeżenie przeglądarki po wprowadzeniu jakiejkolwiek zmiany na serwerze.

  • Log serwera zawiera szczegółowe informacje o tym, jak serwer obsługuje żądania. Na przykład popularne serwery WWW, takie jak Apache i Nginx, generują pliki access.log i error.log. Sprawdzenie tych logów może ujawnić przydatne informacje.

  • Kody błędów HTTP są częścią standardu. Programy wdrażają ten standard w oparciu o sposób, w jaki obsługują żądania. Oznacza to, że określony kod statusu jest zwracany w zależności od tego, jak oprogramowanie serwera obsługuje dany błąd.

Ten poradnik powinien służyć jako przydatna wskazówka w ustalaniu źródła problemu.

Typowe błędy HTTP

  1. Typowe błędy klienta

error 400

Kod błędu 400 oznacza nieprawidłowe żądanie (Bad Request). Informuje o tym, że żądanie HTTP wysłane do serwera zawiera niepoprawną składnię. Przyjrzyjmy się potencjalnym źródłom niepoprawnej składni:

  • Pliki cookie powiązane z witryną mogą być uszkodzone. Wyczyszczenie plików cookie i pamięci podręcznej przeglądarki może rozwiązać problem.

  • Przeglądarka internetowa wysyłająca żądanie może być wadliwa/zawierać błędy.

  • Może to być nieprawidłowe żądanie z powodu błędu podczas ręcznego tworzenia żądań HTTP, na przykład nieprawidłowego użycia curl.

error code 401

Kod błędu 401 (Unauthorized) występuje, gdy żądanie próbuje uzyskać dostęp do zasobów, które nie zostały uwierzytelnione lub zostały uwierzytelnione niepoprawnie. Aby rozwiązać ten problem, użytkownik musi podać dane uwierzytelniające niezbędne do uzyskania dostępu do chronionego zasobu.

Przykładową sytuacją jest próba uzyskania przez użytkownika dostępu do zasobu chronionego uwierzytelnianiem HTTP. W takiej sytuacji użytkownik otrzyma kod błędu 401, chyba że podane zostaną prawidłowa nazwa użytkownika i hasło.

error 403

Kod błędu 403 (Forbidden) odnosi się do sytuacji, w której żądanie użytkownika jest prawidłowe, ale serwer odmawia jego obsługi. Może to wynikać z braku uprawnień do dostępu do żądanego zasobu. Istnieje kilka scenariuszy, które mogą prowadzić do tego problemu:

  • Uprawnienia do plików: Jeśli serwer nie ma wystarczających uprawnień do dostępu do żądanego pliku, może to skutkować błędem 403. Możliwe rozwiązania obejmują zweryfikowanie, czy serwer próbuje uzyskać dostęp do pliku indeksu serwera WWW, czy proces roboczy należący do www-data użytkownika, oraz czy plik indeksu znajduje się we właściwej lokalizacji (w przypadku Nginx jest to /usr/share/nginx/html/index.html).

  • .htaccess: Serwery WWW używają pliku .htaccess do wdrażania różnych funkcji bezpieczeństwa, na przykład filtrowania określonych adresów lub zakresów IP. Możliwe rozwiązanie polega na zweryfikowaniu, czy adres IP, z którego pochodzi żądanie HTTP, nie jest zablokowany.

  • Plik nie istnieje: Jeśli żądanie próbuje uzyskać dostęp do lokalizacji, która nie ma domyślnego pliku indeksu, a listowanie katalogów nie jest włączone, serwer zwróci błąd 403. W takiej sytuacji możliwe rozwiązanie polega na dostosowaniu konfiguracji serwera w celu zezwolenia na listowanie katalogów.

error 404

Kod błędu 404 (Not Found) oznacza, że użytkownik był w stanie pomyślnie połączyć się z serwerem WWW, ale nie mógł zlokalizować żądanego zasobu. Ten błąd może pojawić się w wielu sytuacjach. Oto kilka możliwych działań naprawczych:

  • Sprawdź, czy w linku, który skierował użytkownika do zasobu serwera, nie ma ewentualnych błędów literowych.

  • Użytkownik mógł błędnie wpisać adres URL. Sprawdź, czy tak jest, i popraw go w razie potrzeby.

  • Zweryfikuj istnienie pliku na serwerze. Czy został on przeniesiony lub usunięty z serwera?

  • Serwer może być skonfigurowany z nieprawidłową lokalizacją katalogu głównego dokumentów (document root). Sprawdź to i popraw w razie potrzeby.

  • Czy proces roboczy serwera WWW należący do użytkownika ma uprawnienia do przejścia do żądanego pliku? Pamiętaj, że dostęp do katalogu wymaga zarówno uprawnień do odczytu, jak i do wykonywania.

  • Czy zasób jest dowiązaniem symbolicznym? W takim przypadku serwer musi być skonfigurowany tak, aby podążał za dowiązaniami symbolicznymi.

  1. Typowe błędy serwera

error code 500

Kod błędu 500 (Internal Server Error) występuje, gdy serwer nie jest w stanie przetworzyć żądania z nieznanych przyczyn. W niektórych sytuacjach serwer zgłosi błąd 500, gdy bardziej odpowiedni byłby bardziej szczegółowy kod błędu 5xx.

Jednym z najczęstszych źródeł błędu 500 jest błędna konfiguracja serwera, na przykład nieprawidłowo sformatowany plik .htaccess . Może on również wystąpić w przypadku braku pakietów, na przykład przy próbie uruchomienia kodu PHP bez zainstalowanego PHP w systemie.

error code 502

Kod błędu 502 (Bad Gateway) oznacza, że serwer działa jako serwer pośredniczący (proxy) lub brama (gateway) i nie może uzyskać prawidłowej odpowiedzi od serwera zaplecza (backendu), który jest odpowiedzialny za faktyczną realizację żądania. Jeśli serwer jest odwrotnym proxy (reverse proxy), na przykład modułem równoważenia obciążenia (load balancer), należy sprawdzić kilka różnych rzeczy:

  • Czy serwery zaplecza (backend) działają prawidłowo.

  • Czy odwrotne proxy jest prawidłowo skonfigurowane (z odpowiednią specyfikacją zaplecza).

  • Czy połączenie między odwrotnym proxy a serwerem zaplecza jest prawidłowe. Jeśli serwery mogą komunikować się przy użyciu różnych portów, zapora sieciowa (firewall) musi zezwalać na połączenia na tych portach.

  • Jeśli aplikacja internetowa jest skonfigurowana do korzystania z gniazda (socket), upewnij się, że gniazdo istnieje we właściwej lokalizacji i ma odpowiednie uprawnienia.

error code 503

Kod błędu 503 (Service Unavailable) oznacza, że serwer jest przeciążony lub jest obecnie w trakcie prac konserwacyjnych. Sugeruje to, że serwer powinien stać się dostępny w pewnym momencie.

Jeśli serwer nie jest w trakcie prac konserwacyjnych, oznacza to, że nie posiada on niezbędnych zasobów sprzętowych (mocy obliczeniowej, pamięci itp.) do obsługi przychodzących żądań. W takim przypadku serwer powinien zostać skonfigurowany tak, aby zezwalać na większą liczbę użytkowników lub przydzielać więcej zasobów.

Kod błędu 504 (Gateway Timeout) informuje, że serwer działa jako proxy lub brama i nie otrzymał odpowiedzi z zaplecza w dozwolonym czasie. Istnieje kilka sytuacji, które mogą prowadzić do tego problemu:

  • Słabe połączenie sieciowe między serwerami.

  • Serwer zaplecza działa zbyt wolno (z powodu problemów z wydajnością).

  • Limit czasu (timeout) serwera bramy/proxy jest zbyt krótki.

Podsumowanie

W tym poradniku omówiono kody błędów HTTP, w szczególności te najpopularniejsze. Opisano w nim znaczenie poszczególnych kodów i przedstawiono sugestie dotyczące potencjalnych działań naprawczych. Dzięki tej wiedzy masz teraz solidne podstawy do rozwiązywania problemów z serwerami WWW lub aplikacjami.

To tylko krótka lista najpopularniejszych kodów statusu HTTP. Aby zapoznać się z pełną listą wszystkich kodów statusu HTTP, sprawdź kody statusu HTTP na Wikipedii. Możesz również zapoznać się z naszym samouczkiem na temat Nginx HTTP Proxying, Load Balancing, Buffering, and Caching: omówienie.

Udanej pracy!

author

Pranay Kapgate

Autor · CloudSigma

Preslav Dobrev jest projektantem kreatywnym w CloudSigma, skupiającym się na spójnej tożsamości biznesowej przy wykorzystaniu tradycyjnych i innowacyjnych kanałów marketingowych. Biegle łączy wizję artystyczną ze strategicznym marketingiem, tworząc wywierające wpływ narracje marki.

Komentarze

Brak komentarzy. Bądź pierwszy.