Błąd Cloudflare 521: serwer WWW nie działa - przyczyny i naprawa
Błąd Cloudflare 521 oznacza, że Cloudflare dotarło do adresu IP Twojego serwera źródłowego, ale serwer aktywnie odmówił połączenia, zwykle dlatego, że nic nie nasłuchuje na porcie, który Cloudflare próbowało użyć, zapora zablokowała żądanie albo sam serwer WWW jest zatrzymany. To różni się od timeoutu: coś na serwerze źródłowym natychmiast odpowiedziało "nie".
Co oznacza błąd 521
Kiedy Cloudflare przekazuje żądanie jako proxy, otwiera połączenie TCP do Twojego serwera źródłowego na porcie skonfigurowanym dla tego rekordu. Błąd 521 pojawia się, gdy serwer źródłowy odsyła reset TCP (RST) albo ICMP "connection refused" zamiast zaakceptować połączenie. To zdecydowana odmowa, nie cisza. Porównaj to z błędem 522, gdzie Cloudflare w ogóle nie dostaje odpowiedzi w oknie czasowym, albo z błędem 520, gdzie połączenie się udaje, ale następująca po nim odpowiedź HTTP jest zepsuta.
Jak pojawia się błąd 521
Odwiedzający widzą własną stronę Cloudflare, "Error 521: web server is down", z Ray ID. Żądanie curl pod domenę zwraca ten sam status:
curl -I https://example.com
HTTP/2 521
Ponieważ serwer źródłowy odmówił połączenia na warstwie sieciowej, nic nie dociera do Twojej aplikacji, więc logi aplikacji zwykle w ogóle nic nie pokażą dla nieudanych żądań. Dowody leżą bliżej sieci: własne logi startu i dostępu Twojego serwera WWW, logi połączeń zapory albo grupy bezpieczeństwa w chmurze, oraz logi systemowe na hoście źródłowym (journalctl -u nginx, systemctl status nginx albo odpowiednik dla Twojego stosu).
Co powoduje błąd 521
- Proces serwera WWW jest zatrzymany albo się zawiesił. Nic w ogóle nie nasłuchuje na porcie, więc każda próba połączenia jest natychmiast odrzucana.
- Cloudflare jest skonfigurowane, żeby łączyć się na złym porcie. Jeśli port źródłowy ustawiony na rekordzie DNS albo w ustawieniach sieciowych Cloudflare nie zgadza się z tym, na czym faktycznie nasłuchuje Twój serwer, każde połączenie zostaje odrzucone.
- Zapora albo grupa bezpieczeństwa w chmurze blokuje zakresy IP Cloudflare. Jeśli reguła dopuszcza tylko konkretne adresy źródłowe, a opublikowane zakresy Cloudflare nie są na liście, albo były i zostały później usunięte, połączenia z brzegu sieci Cloudflare są porzucane albo odrzucane.
- Tryb SSL/TLS ustawiony na Full albo Full strict, ale nic nie nasłuchuje na porcie 443 na serwerze źródłowym. Te tryby wymagają, żeby Cloudflare łączyło się z serwerem źródłowym po HTTPS; jeśli serwer źródłowy serwuje tylko czysty HTTP, albo konfiguracja certyfikatu nigdy się nie dokończyła, próba połączenia HTTPS zostaje odrzucona.
- Niepowiązana usługa jest już przypięta do portu, którego oczekuje serwer WWW, więc sam serwer WWW nigdy się nie uruchamia.
521 kontra 523 kontra 522
Te trzy kody łatwo pomylić, bo wszystkie opisują połączenie, które nigdy nie wyprodukowało odpowiedzi HTTP, ale każdy oznacza, że Cloudflare zawiodło na innym etapie.
- 521, serwer WWW nie działa: Cloudflare dotarło do adresu IP serwera źródłowego, a coś tam aktywnie odmówiło połączenia (reset TCP albo ICMP unreachable). Serwer istnieje i odpowiedział, tylko odmową.
- 523, serwer źródłowy jest nieosiągalny: Cloudflare nawet tak daleko nie dotarło. Wskazuje to na problem trasowania, DNS albo IP, najczęściej rekord DNS w Cloudflare wciąż wskazujący na stary adres IP po migracji serwera, albo trasę sieci prywatnej (taką jak Cloudflare Tunnel), która nie działa.
- 522, przekroczono limit czasu połączenia: Cloudflare próbowało handshake'u TCP, ale nie dostało odpowiedzi na czas, ani akceptacji, ani odmowy. Zobacz osobny poradnik o błędzie Cloudflare 522 dla tego przypadku.
Jak rozpoznać, kto zawinił
521 to mocny sygnał, że problem leży po stronie serwera źródłowego względem brzegu sieci Cloudflare, skoro odmowa przyszła bezpośrednio z Twojego własnego serwera albo sieci przed nim. Pytanie, które ma znaczenie operacyjne, to czy dotyczy to całej witryny, czy podzbioru ruchu, a najszybszym sposobem sprawdzenia jest uruchomienie kontroli HTTP z kilku lokalizacji naraz. Kontrola HTTP HostTrackera odpytuje domenę z punktów kontrolnych w wielu krajach i raportuje każdy wynik osobno, więc od razu widzisz, czy każda lokalizacja dostaje ten sam 521, czy tylko niektóre, co wskazywałoby na częściową regułę zapory albo load balancer z jednym niesprawnym backendem, a nie na cały serwer, który nie działa.
Jak naprawić błąd 521
Jeśli jesteś odwiedzającym
- Przeładuj po krótkiej chwili. Jeśli operator witryny właśnie restartuje serwer, naprawa może już być w toku.
- Sprawdź stronę statusu witryny, jeśli istnieje, albo jej media społecznościowe pod kątem znanego zgłoszenia awarii.
- Nie ma nic do zmiany po Twojej stronie. Odmowa dzieje się na własnym serwerze witryny, nie w Twojej przeglądarce, DNS ani u dostawcy internetu.
Jeśli prowadzisz witrynę
- Potwierdź, że proces serwera WWW faktycznie działa:
systemctl status nginx(albo odpowiednik) i sprawdź jego logi pod kątem awarii albo nieudanego restartu. - Potwierdź, że port, który Cloudflare jest skonfigurowane używać, zgadza się z tym, na czym nasłuchuje Twój serwer. Sprawdź port źródłowy pod rekordem DNS albo w ustawieniach sieciowych panelu Cloudflare względem rzeczywistych portów nasłuchujących serwera (
ss -tlnpna Linuksie). - Sprawdź, czy Twoja zapora albo grupa bezpieczeństwa w chmurze dopuszcza ruch przychodzący z opublikowanych zakresów IP Cloudflare na tym porcie. Cloudflare publikuje swoje aktualne zakresy IPv4 i IPv6 na cloudflare.com/ips; reguła zbudowana ze starej kopii tej listy zacznie odrzucać nowe zakresy w miarę ich dodawania.
- Jeśli Twój tryb szyfrowania SSL/TLS to Full albo Full strict, potwierdź, że coś faktycznie nasłuchuje na porcie 443 na serwerze źródłowym z certyfikatem, który Cloudflare potrafi zwalidować. Tymczasowe przełączenie na Flexible jest użyteczną diagnostyką, żeby potwierdzić, że to jest przyczyna, nie stałą naprawą, bo Flexible zostawia połączenie między Cloudflare a serwerem źródłowym niezaszyfrowane.
- Omiń Cloudflare, żeby przetestować serwer źródłowy bezpośrednio i zobaczyć surową odmowę bez warstwy brzegowej pomiędzy:
"Connection refused" tutaj potwierdza, że problemem jest nasłuchujący proces albo zapora serwera źródłowego, nie Cloudflare.curl -v -H "Host: example.com" https://ORIGIN_IP:PORT/ - Sprawdź, czy nic innego na hoście nie zajęło portu, którego oczekuje Twój serwer WWW, co uniemożliwiłoby serwerowi WWW przypięcie się do niego przy starcie.
Jak temu zapobiec
Reguła zapory dopuszczająca wyłącznie zakresy Cloudflare to częsty sposób, w jaki 521 wraca miesiące później, bo Cloudflare z czasem dodaje i wycofuje zakresy IP, a reguła skopiowana raz z czasem się dezaktualizuje. Kontrola HTTP działająca spoza Twojej sieci wyłapuje wynikającą z tego awarię tak samo, jak doświadczyłby jej odwiedzający, zamiast polegać na tym, że ktoś zauważy niedostępność witryny i ją zgłosi.
Powiązane błędy
- Błąd Cloudflare 520: nieznany błąd - serwer źródłowy odpowiedział, ale odpowiedzi nie dało się przekazać.
- Błąd Cloudflare 522: przekroczono limit czasu połączenia - handshake w ogóle nie dostał odpowiedzi.
- Błędy serwera 5xx - ogólna rodzina kodów statusu.
- 502 Bad Gateway - wersja niedotycząca konkretnie Cloudflare awarii upstreama.
Najczęściej zadawane pytania
Czy błąd 521 to to samo co fizyczne wyłączenie serwera?
Niekoniecznie. Oznacza, że coś odmówiło połączenia TCP, co może być zatrzymanym procesem serwera WWW przy wciąż włączonej maszynie, zaporą odrzucającą żądanie albo niedopasowaniem trybu TLS, a także faktycznie wyłączonym serwerem.
Jaki jest najszybszy sposób na potwierdzenie, że przyczyną jest zapora?
Odpytaj serwer źródłowy bezpośrednio jego adresem IP i nagłówkiem Host domeny, omijając Cloudflare. Jeśli to też zostanie odrzucone, blokada leży prawdopodobnie we własnej zaporze albo grupie bezpieczeństwa serwera źródłowego, a nie w czymś specyficznym dla zakresów IP Cloudflare.
Dlaczego błąd 521 zaczyna się pojawiać bez żadnej zmiany na moim serwerze?
Cloudflare okresowo aktualizuje swoje opublikowane zakresy IP. Reguła zapory zbudowana ze starej kopii tej listy przestaje pasować do nowo dodanych zakresów, więc żądania z tych zakresów są odrzucane, mimo że na Twoim własnym serwerze nic się nie zmieniło.
Czy przełączenie trybu SSL/TLS na Flexible naprawia 521 na stałe?
Może zamaskować niedopasowanie trybu Full albo Full strict, bo Flexible nie wymaga HTTPS na serwerze źródłowym, ale oznacza też, że połączenie między Cloudflare a Twoim serwerem jest niezaszyfrowane. Traktuj to jako krok diagnostyczny, a potem napraw nasłuchujący HTTPS na serwerze źródłowym i przełącz z powrotem.
Czym 521 różni się od 523?
521 oznacza, że Cloudflare dotarło do serwera źródłowego i zostało odrzucone. 523 oznacza, że Cloudflare w ogóle nie mogło do niego dotrzeć, co wskazuje na DNS, trasowanie albo zepsuty tunel, a nie na cokolwiek, co zrobił sam serwer źródłowy.