Chyba Cloudflare 521: web server is down - příčiny a opravy
Chyba Cloudflare 521 znamená, že se Cloudflare dostal k IP adrese vašeho originu, ale server spojení aktivně odmítl, obvykle proto, že na portu, který Cloudflare zkusil, nikdo neposlouchá, firewall požadavek zablokoval, nebo je samotný webový server zastavený. Liší se od timeoutu: něco na originu okamžitě odpovědělo "ne".
Co znamená chyba 521
Když Cloudflare proxíruje požadavek, otevře TCP spojení k vašemu originu na portu nastaveném pro daný záznam. Chyba 521 nastane, když origin místo přijetí spojení pošle zpátky TCP reset (RST) nebo ICMP "connection refused". To je jednoznačné odmítnutí, ne ticho. Porovnejte to s chybou 522, kde Cloudflare v rámci svého časového limitu nedostane žádnou odpověď, nebo s chybou 520, kde se spojení povede, ale HTTP odpověď, která následuje, je poškozená.
Jak se chyba 521 projevuje
Návštěvníci vidí vlastní stránku Cloudflare "Error 521: web server is down" s Ray ID. Požadavek curl proti doméně vrátí stejný stav:
curl -I https://example.com
HTTP/2 521
Protože origin odmítl spojení na síťové vrstvě, k vaší aplikaci se nic nedostane, takže logy vaší aplikace u selhaných požadavků obvykle neukážou vůbec nic. Důkazy se nacházejí blíž síti: vlastní startovací a přístupové logy webového serveru, logy spojení vašeho firewallu nebo bezpečnostní skupiny a systémové logy na hostiteli originu (journalctl -u nginx, systemctl status nginx nebo ekvivalent pro váš stack).
Co způsobuje chybu 521
- Proces webového serveru je zastavený nebo spadl. Na portu vůbec nikdo neposlouchá, takže je jakýkoli pokus o spojení okamžitě odmítnut.
- Cloudflare je nastaven, aby se dotazoval na špatný port. Pokud port originu nastavený u DNS záznamu nebo v síťovém nastavení Cloudflare neodpovídá tomu, na čem váš server skutečně poslouchá, každé spojení je odmítnuto.
- Firewall nebo cloudová bezpečnostní skupina blokuje rozsahy IP Cloudflare. Pokud pravidlo povoluje jen konkrétní zdrojové IP a aktuální zveřejněné rozsahy Cloudflare na něm nejsou, nebo byly a později se odstranily, spojení z edge Cloudflare se zahazují nebo odmítají.
- Režim SSL/TLS je nastavený na Full nebo Full strict, ale na originu na portu 443 nikdo neposlouchá. Tyto režimy vyžadují, aby se Cloudflare k originu připojoval přes HTTPS; pokud origin obsluhuje jen obyčejné HTTP, nebo se nastavení certifikátu nikdy nedokončilo, pokus o HTTPS spojení je odmítnutý.
- Na portu, který webový server očekává, už je navázaná nesouvisející služba, takže se samotný webový server vůbec nespustí.
521 vs 523 vs 522
Tyto tři kódy se snadno pletou, protože všechny popisují spojení, ze kterého nikdy nevzešla HTTP odpověď, ale každý znamená, že Cloudflare selhal v jiné fázi.
- 521, web server is down: Cloudflare se dostal k IP adrese originu a něco tam spojení aktivně odmítlo (TCP reset nebo ICMP unreachable). Server existuje a odpověděl, jen odmítnutím.
- 523, origin is unreachable: Cloudflare se tak daleko vůbec nedostal. To ukazuje na problém se směrováním, DNS nebo IP adresou, běžně na DNS záznam u Cloudflare, který po migraci serveru pořád míří na starou IP adresu, nebo na nefunkční soukromou síťovou trasu (například Cloudflare Tunnel).
- 522, connection timed out: Cloudflare se pokusil o TCP handshake, ale včas nedostal žádnou odpověď, ani přijetí, ani odmítnutí. Pro tento případ viz samostatný návod na chybu Cloudflare 522.
Jak zjistit, čí je to chyba
521 je silný signál, že problém sedí na straně originu za edge Cloudflare, protože odmítnutí přišlo z vašeho vlastního serveru nebo ze sítě přímo před ním. Provozně důležitá otázka je, jestli to postihuje celý web, nebo jen část provozu, a nejrychlejší způsob, jak to zjistit, je spustit HTTP kontrolu z několika míst najednou. HTTP kontrola HostTracker se dotazuje na doménu z kontrolních bodů ve více zemích a hlásí každý výsledek zvlášť, takže hned uvidíte, jestli stejnou 521 dostávají všechna místa, nebo jen některá, což by ukazovalo na částečné pravidlo firewallu nebo load balancer s jedním nefunkčním backendem, ne na to, že je celý server nedostupný.
Jak opravit chybu 521
Pokud jste návštěvník
- Po krátkém čekání znovu načtěte stránku. Pokud provozovatel webu restartuje server, oprava už možná probíhá.
- Zkontrolujte stavovou stránku webu, pokud nějakou má, nebo jeho sociální sítě kvůli oznámení o známém výpadku.
- Na vaší straně není co měnit. Odmítnutí nastává na vlastním serveru webu, ne ve vašem prohlížeči, DNS ani u poskytovatele internetu.
Pokud web provozujete
- Ověřte, že proces webového serveru skutečně běží:
systemctl status nginx(nebo ekvivalent) a zkontrolujte jeho logy kvůli pádu nebo neúspěšnému restartu. - Ověřte, že port, na který je Cloudflare nastavený, odpovídá tomu, na čem váš server poslouchá. Porovnejte port originu v DNS záznamu nebo síťovém nastavení v dashboardu Cloudflare se skutečnými naslouchajícími porty serveru (
ss -tlnpna Linuxu). - Zkontrolujte, jestli váš firewall nebo cloudová bezpečnostní skupina povoluje na daném portu příchozí provoz ze zveřejněných rozsahů IP Cloudflare. Cloudflare zveřejňuje své aktuální rozsahy IPv4 a IPv6 na cloudflare.com/ips; pravidlo postavené na staré kopii tohoto seznamu začne odmítat nově přidané rozsahy.
- Pokud je váš režim šifrování SSL/TLS Full nebo Full strict, ověřte, že na originu skutečně na portu 443 něco poslouchá s certifikátem, který Cloudflare dokáže ověřit. Dočasné přepnutí na Flexible je užitečný diagnostický krok, který tohle potvrdí jako příčinu, ne trvalá oprava, protože Flexible nechává spojení mezi Cloudflare a vaším originem nešifrované.
- Obejděte Cloudflare a otestujte origin přímo, abyste viděli surové odmítnutí bez edge vrstvy uprostřed:
"Connection refused" tady potvrdí, že problém je v naslouchání nebo firewallu originu, ne v Cloudflare.curl -v -H "Host: example.com" https://ORIGIN_IP:PORT/ - Zkontrolujte, že port, který váš webový server očekává, nezabral nikdo jiný na hostiteli, což by webovému serveru bránilo se na něj při startu navázat.
Jak jí předejít
Pravidlo firewallu, které povoluje jen rozsahy Cloudflare, je běžný způsob, jak se 521 objeví znovu za pár měsíců, protože Cloudflare své rozsahy IP časem přidává a ruší, a jednou zkopírované pravidlo postupně zastará. HTTP kontrola běžící mimo vaši síť zachytí výsledný výpadek stejně, jak by ho zažil návštěvník, místo aby to záviselo na tom, že si někdo všimne nedostupného webu a nahlásí to.
Související chyby
- Chyba Cloudflare 520: unknown error - origin odpověděl, ale odpověď se nedala předat dál.
- Chyba Cloudflare 522: connection timed out - handshake nedostal žádnou odpověď vůbec.
- Chyby serveru 5xx - obecná rodina stavových kódů.
- 502 Bad Gateway - necloudflarová verze selhání upstreamu.
Často kladené otázky
Je chyba 521 totéž jako fyzicky vypnutý server?
Ne nutně. Znamená, že něco odmítlo TCP spojení, což může být zastavený proces webového serveru, zatímco stroj samotný běží dál, firewall odmítající požadavek, nesoulad režimu TLS, ale i skutečně vypnutý server.
Jaký je nejrychlejší způsob, jak potvrdit, že příčinou je firewall?
Dotažte se přímo na origin s jeho IP adresou a hlavičkou Host domény, obejděte Cloudflare. Pokud je i tohle odmítnuto, blokace bude spíš u vlastního firewallu nebo bezpečnostní skupiny originu než u něčeho specifického pro rozsahy IP Cloudflare.
Proč by chyba 521 začala nastávat bez jakékoli změny na mém serveru?
Cloudflare pravidelně aktualizuje své zveřejněné rozsahy IP. Pravidlo firewallu postavené na staré kopii tohoto seznamu přestane odpovídat nově přidaným rozsahům, takže požadavky z nich se odmítají, i když se na vašem vlastním serveru nic nezměnilo.
Vyřeší přepnutí SSL/TLS režimu na Flexible chybu 521 trvale?
Může zamaskovat nesoulad Full nebo Full strict, protože Flexible nevyžaduje HTTPS na originu, ale zároveň to znamená, že spojení mezi Cloudflare a vaším serverem je nešifrované. Berte to jako diagnostický krok, pak opravte TLS naslouchání originu a přepněte zpátky.
Jak se 521 liší od 523?
521 znamená, že se Cloudflare dostal k originu a byl odmítnut. 523 znamená, že se k němu Cloudflare vůbec nedostal, což ukazuje na DNS, směrování nebo rozbitý tunel, ne na nic, co udělal samotný origin server.