Jakýkoli webový server, který obdrží HTTP požadavek, odpoví stavovým kódem HTTP. Tyto kódy jsou krátké poznámky ze serveru popisující situaci. Neobsahují žádný skutečný obsah stránek. Místo toho se jedná o zprávu o tom, jak věci dopadly po přijetí požadavku HTTP. V mnoha situacích jsou tyto kódy důležité pro diagnostiku různých problémů se serverem/klientem.
Tyto kódy jsou třímístná celá čísla, z nichž každé označuje různé stavy. Na základě první číslice se kódy HTTP dělí do pěti kategorií:
-
Informační odpovědi: Hodnota se pohybuje v rozmezí od 100 do 199. Popisuje, že požadavek byl přijat a zpracovává se.
-
Úspěšné odpovědi: Hodnota se pohybuje v rozmezí od 200 do 299. Říká, že akce byla úspěšně přijata, pochopena a akceptována.
-
Zprávy o přesměrování: Hodnota se pohybuje v rozmezí od 300 do 399. Znamená to, že k dokončení požadavku jsou nutné další kroky.
-
Chybové odpovědi klienta: Hodnota se pohybuje v rozmezí od 400 do 499. Požadavek buď obsahuje nesprávnou syntaxi, nebo jej nelze splnit.
-
Chybové odpovědi serveru: Hodnota se pohybuje v rozmezí od 500 do 599. Znamená to, že serveru se nepodařilo zpracovat platný požadavek.
V této příručce se z pohledu systémového administrátora podíváme na některé z nejběžnějších chybových kódů HTTP, se kterými se setkává každý (4xx a 5xx). K tomu, aby webový server odpověděl konkrétním kódem, může vést celá řada situací. Tento návod se navíc bude zabývat možnými příčinami a řešeními.
Chyby klienta vs. chyby serveru
Chybové kódy 400 až 499 pocházejí od klientské strany uživatele (webový prohlížeč nebo jakýkoli HTTP klient). Přestože se chyby týkají převážně klienta, je užitečné vědět, s jakým kódem se uživatel potýká. Může to pomoci určit, zda se potenciální problém nachází na straně serveru.
Chyby serveru (stavové kódy HTTP 500 až 599) naopak vznikají tehdy, když si je server vědom, že došlo k chybě, nebo není schopen požadavek zpracovat.
Obecné řešení problémů
Bez ohledu na chybu uvádíme několik obecných tipů pro řešení problémů, které byste měli vyzkoušet jako první, kdykoli se setkáte s jakýmkoli chybovým kódem HTTP:
-
Při testování serveru pomocí webového prohlížeče je dobrým zvykem po provedení jakékoli změny na serveru prohlížeč obnovit.
-
Protokol serveru obsahuje podrobné informace o tom, jak server zpracovává požadavky. Například oblíbené webové servery jako Apache a Nginx vytvářejí soubory access.log a error.log. Kontrola těchto protokolů může odhalit užitečné informace.
-
Chybové kódy HTTP jsou součástí standardu. Programy tento standard implementují na základě toho, jak zpracovávají požadavky. To znamená, že konkrétní stavový kód je vrácen podle toho, jak serverový software zpracovává danou chybu.
Tato příručka by měla sloužit jako užitečné vodítko při zjišťování zdroje problému.
Běžné chyby HTTP
-
Běžné chyby klienta

Chybový kód 400 označuje špatný požadavek (Bad Request). Popisuje, že požadavek HTTP odeslaný na server obsahuje neplatnou syntaxi. Podívejme se na potenciální zdroje špatné syntaxe:
-
Soubory cookie související s webem mohou být poškozené. Problém může vyřešit vymazání souborů cookie a mezipaměti prohlížeče.
-
Webový prohlížeč odesílající požadavek může být chybný.
-
Může se jednat o špatný požadavek kvůli chybě při ručním vytváření požadavků HTTP, například při nesprávném použití curl.

Chybový kód 401 (Neautorizováno) nastává, když se požadavek pokouší o přístup ke zdrojům, které nebyly ověřeny nebo nebyly ověřeny správně. K vyřešení problému musí uživatel poskytnout potřebné přihlašovací údaje pro přístup k chráněnému zdroji.
Příkladem může být situace, kdy se uživatel pokouší o přístup ke zdroji chráněnému ověřováním HTTP. V takové situaci uživatel obdrží chybový kód 401, pokud nezadá platné uživatelské jméno a heslo.

Chybový kód 403 (Zakázáno) označuje situaci, kdy je požadavek uživatele platný, ale server jej odmítá vyřídit. Může to být způsobeno nedostatečným oprávněním k přístupu k požadovanému zdroji. K tomuto problému může vést několik scénářů:
-
Oprávnění k souborům: Pokud server nemá dostatečná oprávnění pro přístup k požadovanému souboru, může to vést k chybě 403. Mezi možná řešení patří ověření, zda se server pokouší o přístup k indexovému souboru webového serveru, zda pracovní proces vlastněný www-data uživatelem a zda se indexový soubor nachází na správném místě (v případě Nginx je to /usr/share/nginx/html/index.html).
-
.htaccess: Webové servery používají soubor .htaccess k implementaci různých bezpečnostních funkcí, například k filtrování konkrétních IP adres nebo rozsahů. Možná náprava spočívá v ověření, zda není blokována IP adresa, ze které přichází požadavek HTTP.
-
Soubor neexistuje: Pokud se požadavek pokouší o přístup k místu, které nemá výchozí indexový soubor a výpisy adresářů nejsou povoleny, server vrátí chybu 403. V takové situaci spočívá možné řešení v úpravě konfigurace serveru tak, aby výpisy adresářů povoloval.

Kód chyby 404 (Nenalezeno) znamená, že se uživateli podařilo úspěšně připojit k webovému serveru, ale nepodařilo se mu najít požadovaný prostředek. Tato chyba se může objevit v řadě situací. Zde jsou některé z možných kroků k odstranění problému:
-
Zkontrolujte případné překlepy v odkazu, který uživatele na prostředek serveru nasměroval.
-
Uživatel mohl zadat adresu URL chybně. Zkontrolujte, zda tomu tak je, a v případě potřeby ji opravte.
-
Ověřte existenci souboru na serveru. Nebyl ze serveru přesunut nebo smazán?
-
Server může mít nakonfigurované nesprávné umístění kořenového adresáře dokumentů. Zkontrolujte to a v případě potřeby opravte.
-
Má pracovní proces webového serveru vlastněný uživatelem oprávnění k přístupu k požadovanému souboru? Upozorňujeme, že přístup k adresáři vyžaduje oprávnění ke čtení i ke spuštění.
-
Jedná se o symbolický odkaz? V takovém případě musí být server nakonfigurován tak, aby symbolické odkazy následoval.
-
Běžné chyby serveru

Kód chyby 500 (Interní chyba serveru) se vyskytuje v případě, kdy server z neznámých důvodů není schopen požadavek zpracovat. V některých situacích server nahlásí chybu 500, i když by byl vhodnější konkrétnější kód chyby 5xx.
Jedním z nejčastějších zdrojů chyby 500 je nesprávně nakonfigurovaný server, například chybně formátovaný soubor .htaccess . Může k ní dojít také v případě, že chybí některé balíčky, například při pokusu o spuštění PHP kódů bez nainstalovaného PHP v systému.

Kód chyby 502 (Špatná brána) říká, že server je proxy nebo brána a nemůže získat platnou odpověď od backendového serveru (který je zodpovědný za skutečné vyřízení požadavku). Pokud je server reverzní proxy, například nástroj pro vyrovnávání zátěže, je třeba zkontrolovat několik různých věcí:
-
Backendové servery jsou v pořádku.
-
Reverzní proxy je správně nakonfigurována (se správnými specifikacemi backendu).
-
Spojení mezi reverzní proxy a backendovým serverem je v pořádku. Pokud servery mohou komunikovat pomocí různých portů, musí firewall připojení k těmto portům povolit.
-
Pokud je webová aplikace nakonfigurována pro použití socketu, ujistěte se, že socket existuje na správném místě se správnými oprávněními.

Kód chyby 503 (Služba je nedostupná) popisuje, že server je přetížen nebo na něm právě probíhá údržba. Znamená to, že by měl být server v určitém okamžiku opět dostupný.
Pokud na serveru neprobíhá údržba, znamená to, že server nemá potřebné hardwarové prostředky (výpočetní výkon, paměť atd.) ke zpracování příchozích požadavků. V takovém případě by měl být server nakonfigurován tak, aby umožňoval přístup více uživatelům nebo mu bylo přiděleno více prostředků.
Kód chyby 504 (Časový limit brány vypršel) říká, že server je proxy nebo brána a neobdržel odpověď od backendu v povoleném časovém okně. K tomuto problému může vést několik situací:
-
Špatné síťové připojení mezi servery.
-
Backendový server běží příliš pomalu (kvůli problémům s výkonem).
-
Časový limit brány/proxy serveru je nastaven příliš přísně.
Závěrečné myšlenky
Tato příručka se zabývá chybovými kódy HTTP, zejména některými z nejběžnějších. Popisuje, co tyto kódy znamenají, a nabízí návrhy na možná řešení problémů. S těmito znalostmi nyní máte solidní základ pro řešení problémů s vašimi webovými servery nebo aplikacemi.
Toto je pouze stručný seznam nejoblíbenějších stavových kódů HTTP. Pro ucelený seznam všech stavových kódů HTTP se podívejte na stavové kódy HTTP na Wikipedii. Můžete se také podívat na náš návod na Nginx HTTP proxyování, vyvažování zátěže, buffering a cachování: přehled.
Příjemnou práci s počítačem!
Komentáře
Zatím žádné komentáře. Buďte první.