Přejít na hlavní obsah

Návody / Opravte to: návody na chyby, se kterými se lidé skutečně setkávají

Chyba Cloudflare 520: co znamená a jak ji opravit

Chyba Cloudflare 520 znamená, že se Cloudflare k vašemu originu připojil, ale dostal zpátky odpověď, která byla prázdná, nerozpoznatelná nebo jinak příliš poškozená na to, aby ji předal návštěvníkovi. Cloudflare používá chybový kód 520 jako sběrnou kategorii: z originu něco přišlo, ale ne něco, co odpovídá pravidlům normální HTTP odpovědi.

Co znamená chyba 520

Cloudflare sedí mezi návštěvníkem a vaším webovým serverem jako reverzní proxy. U běžného požadavku otevře TCP spojení k vašemu originu, pošle požadavek a předá jakoukoli HTTP odpověď, která přijde zpátky. Chyba 520 nastane, když tento poslední krok selže: TCP spojení se povede, ale bajty, které následují, se nedají zpracovat jako platná HTTP odpověď, nebo nepřijdou žádné bajty vůbec, než se spojení uzavře.

To řadí 520 do jiné kategorie než ostatní kódy Cloudflare 5xx. Chyba 521 znamená, že origin spojení rovnou odmítl. Chyba 522 znamená, že pokusu o spojení vypršel časový limit. Chyba 520 znamená, že origin něco řekl, ale Cloudflare tomu nedokázal porozumět ani to předat dál.

Jak se chyba 520 projevuje

V prohlížeči Cloudflare zobrazí vlastní chybovou stránku "Error 520: web server returned an unknown error" spolu s Ray ID, které budete potřebovat, pokud budete kontaktovat podporu Cloudflare. Obyčejný požadavek curl proti doméně ukáže stejný stavový kód:

curl -I https://example.com
HTTP/2 520

Na straně Cloudflare panely Security nebo Analytics v dashboardu ukazují nárůst odpovědí 5xx a Enterprise účty s přístupem k Logpull nebo Logpush si mohou pro každý selhaný požadavek stáhnout konkrétní edge colo a Ray ID. Nic z toho vám ale neřekne, co origin skutečně poslal, takže dalším místem, kam se podívat, je váš vlastní server.

Na originu zkontrolujte logy webového serveru a aplikace ve stejný časový okamžik jako selhání. Hledejte restart procesu, segmentation fault, zabití kvůli nedostatku paměti v systémovém logu (dmesg nebo journalctl -k), nebo chybu aplikace, která spadla uprostřed odpovědi. Pokud logy aplikace neukazují nic neobvyklého, problém bude spíš odpověď, která se technicky dokončila, ale porušila nějaké pravidlo HTTP, například předimenzovanou hlavičku.

Co způsobuje chybu 520

  • Proces originu spadl nebo se restartoval během zpracování požadavku. Spojení se uzavře dřív, než odejde kompletní odpověď. Tohle je nejčastější příčina.
  • Origin resetoval TCP spojení (RST) místo toho, aby ho čistě uzavřel. Aplikační servery pod tlakem na paměť nebo narážející na timeout workeru to dělají často.
  • Hlavičky odpovědi přes limit 16 KB Cloudflare. Velká hlavička set-cookie, hromada debugovacích hlaviček nebo upovídané hlavičky CORS mohou posunout celkový součet za to, co Cloudflare přijme.
  • Cookie nebo kombinovaná hlavička cookies příliš velká. Data relace, sledovací cookies nebo špatně nastavená sada cookies mohou časem přerůst limity prohlížeče a proxy.
  • Chybějící nebo poškozený status řádek. Některé frameworky vrátí místo řádné HTTP odpovědi surový chybový řetězec, když neošetřená výjimka dorazí až na úroveň webového serveru.
  • Origin poslal na HTTP(S) portu ne-HTTP data. Tohle nastává po špatně nastavené reverzní proxy, chybném namapování portu, nebo když se na port naváže jiná služba dřív než skutečný webový server.
  • Bezpečnostní zařízení nebo WAF před originem ukončily spojení uprostřed odpovědi. Některé lokální WAF a load balancery ukončují spojení, která spustí pravidlo, což vypadá z pohledu Cloudflare naprosto stejně jako pád.

Jak zjistit, čí je to chyba

Jelikož Cloudflare od originu odpověď skutečně dostal, chyba 520 je silný signál, že problém je na straně originu, ne v síti Cloudflare, na rozdíl od chyby 521 nebo 522, kde selhalo samotné spojení. Otevřenou otázkou obvykle je, jestli to postihuje každého návštěvníka, nebo jen některé.

Nejrychlejší způsob, jak to rozlišit, je spustit HTTP kontrolu z několika míst najednou. Pokud kontrola proti veřejné doméně selže ze všech míst ve stejnou chvíli, kdy uživatelé chybu hlásí, je origin sám nedostupný nebo padá pro každého, ne jen v jednom edge datacentru. Pokud selhává jen občas nebo jen z konkrétních regionů, může být origin přetížený provozem z toho regionu, nebo je zapojená vrstva cachování či vyvažování zátěže přítomná jen v části vašeho nastavení. HTTP kontrola HostTracker běží z kontrolních bodů ve více zemích a hlásí výsledek každého zvlášť, což je detail, který vám jediný curl z vlastního stolu nedá.

Origin můžete od Cloudflare izolovat i úplně tak, že ho vytočíte přímo s hlavičkou Host domény, obejdete edge síť, takže jakákoli chyba, kterou uvidíte, je nepochybně chyba originu:

curl -v -H "Host: example.com" https://ORIGIN_IP/

Nahraďte ORIGIN_IP skutečnou IP adresou svého serveru. Pokud i tento přímý požadavek selže nebo vrátí stejnou poškozenou odpověď, chyba na originu je potvrzená.

Jak opravit chybu 520

Pokud jste návštěvník

  1. Načtěte stránku znovu po minutě nebo dvou. Řada chyb 520 pochází z krátkého pádu nebo restartu, ze kterého se vlastní supervizor procesů webu automaticky zotaví.
  2. Zkuste anonymní okno nebo jinou síť. Tím vyloučíte zastaralou lokální cache nebo rozšíření prohlížeče, které se chová divně, i když 520 jen zřídka způsobí něco na vaší straně.
  3. Zkontrolujte, jestli web nemá vlastní stavovou stránku se známým výpadkem, pokud ji má.
  4. Na vaší straně není co nastavit, aby se 520 opravila. Generuje ji vlastní server webu, ne váš prohlížeč, poskytovatel internetu ani DNS resolver.

Pokud web provozujete

  1. Zkontrolujte logy webového serveru a aplikace originu v přesný čas selhání, hledejte pád, neošetřenou výjimku nebo restart workeru.
  2. Obejděte Cloudflare a dotažte se přímo na origin s hlavičkou Host (ukázáno výše), nebo použijte možnost Cloudflare "Pause Cloudflare on Site", abyste potvrdili, že je odpověď poškozená nezávisle na proxy.
  3. Změřte velikost svých hlaviček odpovědi a cookies. Jedna velká hlavička set-cookie nebo hromada debugovacích hlaviček ponechaných v produkci mohou posunout celek přes 16 KB; ořežte, co nepotřebujete, a velká data relace přesuňte na stranu serveru.
  4. Hledejte poškozené odpovědi: reverzní proxy nebo load balancer namířený na špatný upstream, aplikaci vracející čistý text na HTTP portu, nebo chybějící status řádek z výchozího ošetření chyb frameworku.
  5. Zkontrolujte vyčerpání zdrojů na originu: limity paměti, limity poolu spojení, nebo správce procesů (systemd, pm2, pool workerů Gunicorn nebo uWSGI) zaseknutý ve smyčce restartů.
  6. Pokud mezi internetem a vaším aplikačním serverem sedí WAF, antivirová proxy nebo load balancer, zkontrolujte jejich vlastní logy kvůli spojením, která ve stejnou dobu zahodily nebo resetovaly.

Jak jí předejít

Chyba 520 se obvykle nejdřív objeví jako tiket podpory, ne jako upozornění, protože nic na originu nutně nezaznamená selhaný handshake s edge sítí Cloudflare tak, jak zaznamenává výjimku aplikace. Externí kontrola dostupnosti běžící mimo vaši vlastní síť zachytí stejné selhání, jaké vidí návštěvník, ze stejného úhlu pohledu, dřív než to musí někdo nahlásit. Spuštění kontroly z více zemí navíc ihned ukáže, jestli je 520 globální, nebo omezená na jeden region, což je detail, který rozhodne, kde začít ladit.

Související chyby

Často kladené otázky

Je chyba 520 chyba Cloudflare, nebo moje?

Skoro vždy originu. Cloudflare odpověď dostal a nedokázal jí porozumět ani ji předat dál, což znamená, že poškozenou odpověď vyprodukoval webový server originu, ne síť Cloudflare.

Znamená chyba 520, že je celý můj web nedostupný?

Ne nutně. Znamená, že selhal konkrétní požadavek, který ji spustil. Pokud origin padá pod zátěží, může některým požadavkům servírovat 520 a jiným normální odpovědi, dokud se základní problém nevyřeší.

Můžu chybu 520 opravit jen z dashboardu Cloudflare?

Zřídka. Protože příčina je téměř vždy na originu, nastavení dashboardu nevyřeší padající aplikaci ani předimenzovanou hlavičku odpovědi. Výjimkou je ověření, že váš režim SSL/TLS a nastavení originu odpovídají tomu, co server skutečně dělá, což aspoň vyloučí špatnou konfiguraci na straně Cloudflare.

Jaký je rozdíl mezi chybou 520 a obyčejnou 502 Bad Gateway?

502 je obecný stavový kód HTTP pro neplatnou odpověď upstream serveru, který používá jakákoli reverzní proxy. Cloudflare používá 520 konkrétně jako vlastní sběrnou kategorii pro odpověď natolik poškozenou, že nezapadá do žádného jiného pojmenovaného kódu Cloudflare 5xx, a proto se místo obecné stránky 502 zobrazí chybová stránka Cloudflare s Ray ID.

Může velká cookie skutečně způsobit chybu 520?

Ano. Cloudflare vynucuje limit na celkovou velikost hlaviček odpovědi, momentálně kolem 16 KB, a cookies se do něj počítají. Aplikace, která postupně přidává do cookie relace, nebo která nastaví najednou několik velkých cookies, může tento limit překročit a spustit 520, i když aplikace sama žádnou chybu nemá.

Pomůže opakování požadavku?

Někdy, pokud byla příčinou dočasný pád nebo restart na originu, ze kterého se už zotavil. Pokud origin trvale posílá poškozené odpovědi, například kvůli předimenzované hlavičce u každého požadavku, opakování nepomůže, dokud se origin neopraví.

Zkontrolovat hned

Spusťte bezplatnou kontrolu na svém webu - bez registrace.

HTTP check

Sledovat trvale

Dostanete upozornění ve chvíli, kdy něco přestane fungovat: HostTracker kontroluje z více než 300 lokalit a upozorní vás e-mailem, SMS, přes Slack, Telegram a další.

Funkce HostTracker

Více v této sekci: Opravte to: návody na chyby, se kterými se lidé skutečně setkávají