Błąd 521 i 522 w Cloudflare: serwer źródłowy nie odpowiada
· 6 min czytania
Co oznaczają te błędy
Kody 521, 522 i 524 nie pochodzą z Twojego serwera, lecz z Cloudflare. Odwiedzający trafia na Cloudflare, Cloudflare próbuje pobrać stronę z Twojego serwera źródłowego i nie udaje mu się. Strona błędu z logo Cloudflare mówi, że pośrednik działa, a problem jest między nim a Twoją maszyną albo na niej.
- 521 Web server is down: serwer źródłowy odrzucił połączenie. Maszyna odpowiada, ale na porcie 80 lub 443 nikt nie nasłuchuje albo firewall odrzuca adresy Cloudflare. Odpowiednik ERR_CONNECTION_REFUSED widziany od strony Cloudflare.
- 522 Connection timed out: Cloudflare nie zdołał nawiązać połączenia TCP w czasie limitu. Serwer jest wyłączony, przeciążony albo firewall po cichu gubi pakiety.
- 524 A timeout occurred: połączenie udało się, ale aplikacja nie odpowiedziała w ciągu 100 sekund (bezpłatny plan Cloudflare). To ten sam problem co błąd 504, tylko licznik czasu trzyma Cloudflare.
Częste przyczyny
- Serwer WWW zatrzymany albo nasłuchuje na złym porcie. nginx albo Apache nie wystartował po zmianie konfiguracji; Cloudflare dostaje reset i pokazuje 521.
- Firewall blokuje adresy Cloudflare. Po „utwardzeniu” serwera albo po tym, jak fail2ban zbanował adresy Cloudflare, bo wszystkie żądania wyglądają, jakby przychodziły z nich. Efekt: 521 albo 522 dla wszystkich, choć bezpośrednio serwer działa.
- Zły tryb SSL. W trybie „Full (strict)” Cloudflare wymaga na serwerze ważnego certyfikatu na porcie 443; serwer, który ma tylko HTTP, odrzuca połączenie i wraca 521. W trybie „Flexible” Cloudflare łączy się na port 80, który może być zamknięty.
- Zły adres IP w DNS Cloudflare. Po przeprowadzce rekord A w panelu Cloudflare nadal wskazuje stary serwer.
- Serwer wyłączony albo przeciążony. Zawieszona maszyna wirtualna, wyczerpana pamięć, obciążenie tak wysokie, że jądro nie przyjmuje nowych połączeń: 522.
- Za długie żądanie. Eksport, raport, import: ponad 100 sekund i Cloudflare odpowiada 524, choć serwer wciąż pracuje.
Jeśli odwiedzasz cudzą stronę
Nic do zrobienia; błąd leży na serwerze właściciela, nie w Twojej sieci. Odśwież po minucie. Jeśli strona pokazuje 524, może być tylko bardzo wolna; spróbuj innej podstrony.
Jeśli to Twoja strona: najpierw sprawdź
Uruchom narzędzie Is it down?: pokaże, że odpowiada Cloudflare (nagłówek server: cloudflare) i jaki kod. Potem ominąć pośrednika i zapytać serwer bezpośrednio:
# czy serwer źródłowy odpowiada bez Cloudflare?
curl -I -k --resolve przyklad.pl:443:203.0.113.10 https://przyklad.pl
curl -I --resolve przyklad.pl:80:203.0.113.10 http://przyklad.pl
# czy maszyna w ogóle żyje?
ping -c 3 203.0.113.10
nc -zv -w 5 203.0.113.10 443
Jeśli bezpośrednio działa, a przez Cloudflare nie, winny jest firewall, tryb SSL albo adres IP w DNS. Jeśli nie działa bezpośrednio, problem jest na serwerze: zaloguj się przez SSH albo przez konsolę dostawcy.
systemctl status nginx apache2 2>/dev/null | grep -E 'service|Active'
sudo ss -tlnp | grep -E ':80 |:443 '
sudo ufw status verbose
sudo fail2ban-client status | grep Jail
uptime
free -m
Naprawy na własnym serwerze
1. Uruchom serwer WWW
sudo nginx -t && sudo systemctl restart nginx
sudo apachectl configtest && sudo systemctl restart apache2
sudo journalctl -u nginx -n 50 --no-pager
Dziennik mówi, dlaczego nie wystartował: zajęty port, błąd składni, brakujący certyfikat. Upewnij się, że nasłuchuje na 0.0.0.0:443, nie tylko na 127.0.0.1.
2. Wpuść adresy Cloudflare
Cloudflare publikuje listę swoich zakresów IP. Dodaj je do firewalla i wyłącz je z fail2ban:
# ufw: zezwól na zakresy Cloudflare na 80 i 443
for ip in $(curl -s https://www.cloudflare.com/ips-v4); do sudo ufw allow from $ip to any port 80,443 proto tcp; done
for ip in $(curl -s https://www.cloudflare.com/ips-v6); do sudo ufw allow from $ip to any port 80,443 proto tcp; done
W /etc/fail2ban/jail.local dodaj te zakresy do ignoreip, a w nginx włącz real_ip_header CF-Connecting-IP; z set_real_ip_from dla każdego zakresu, żeby logi i limity widziały prawdziwego odwiedzającego, a nie Cloudflare. Potem sudo fail2ban-client reload.
3. Dopasuj tryb SSL
W panelu Cloudflare, zakładka SSL/TLS: „Full (strict)” wymaga ważnego certyfikatu na serwerze (Let’s Encrypt albo Cloudflare Origin Certificate). Jeśli serwer ma tylko HTTP, ustaw na czas naprawy „Flexible”, a docelowo zainstaluj certyfikat:
sudo certbot --nginx -d przyklad.pl -d www.przyklad.pl
Wyzwanie HTTP-01 działa przez Cloudflare, o ile port 80 jest otwarty dla jego adresów. Sprawdź wynik przez SSL checker.
4. Popraw adres IP w DNS
W panelu Cloudflare, zakładka DNS: rekord A dla przyklad.pl i www musi wskazywać aktualny adres serwera (hostname -I na serwerze). Zmiana działa od razu, bo Cloudflare sam jest resolverem dla tej strefy.
5. Serwer przeciążony albo wyłączony
uptime
free -m
df -h
sudo dmesg -T | grep -iE 'oom|killed process' | tail
Zatrzymany proces, pełny dysk albo zabity przez OOM-killer serwer bazy danych: zwolnij miejsce, zrestartuj usługę po teście konfiguracji, a jeśli maszyna nie odpowiada wcale, zrestartuj ją z konsoli dostawcy. Pełna lista kroków: awaria serwera: co sprawdzić najpierw.
6. Błąd 524: skróć żądanie
Przenieś długie zadania do crona albo kolejki, włącz cache i ustaw limity czasu na wywołania zewnętrzne; szczegóły w poradniku o błędzie 504. Dla pojedynczych długich adresów (eksport) możesz wyłączyć proxy Cloudflare na osobnej subdomenie („szara chmurka”).
Gdy to problem dostawcy hostingu
Na hostingu współdzielonym nie zmienisz firewalla ani serwera WWW. Wyślij dostawcy:
Dzień dobry, moja strona przyklad.pl stoi za Cloudflare i od około 12:40 UTC pokazuje błąd 522 (albo 521). Rekord A wskazuje 203.0.113.10, a tryb SSL to „Full”. Czy mogliby Państwo sprawdzić, czy serwer WWW na tym adresie działa i czy firewall przepuszcza zakresy adresów Cloudflare na portach 80 i 443?
Jak zapobiec następnemu
Błąd 521 lub 522 to z punktu widzenia serwera zwykły zatrzymany serwer WWW, zamknięty port albo przeciążenie. Monitor portu i sprawdzanie strony z zewnątrz w monitoringu stron widzą to w ciągu minuty, a agent serwerowy pokazuje obciążenie i pamięć, zanim Cloudflare przestanie się doczekiwać. Awaria? Naprawiamy: Quick Fix restartuje zatrzymaną usługę po udanym teście konfiguracji w stałej cenie; reguły firewalla, tryb SSL i certyfikat porządkuje Deep Fix. Zobacz naprawa serwera. Pętla przekierowań między Cloudflare a serwerem to osobny błąd: ERR_TOO_MANY_REDIRECTS.
Co teraz
Sprawdź z zewnątrz
Strona nie działa u wszystkich czy tylko u Ciebie i co odpowiada serwer? Za darmo, bez rejestracji.
Is it down? Sprawdź, czy strona działaAwaria? Naprawiamy.
Na Twoim własnym serwerze albo na hostingu z dostępem SSH: Quick Fix w stałej cenie na częste przyczyny, Deep Fix rozliczany w blokach po 15 minut na resztę, przez całą dobę. Cena przed zamówieniem.
Zamów naprawęWięcej poradników
- Strona nie działa: co zrobić w pierwszych 15 minutach
- Awaria serwera: co sprawdzić i w jakiej kolejności
- Błąd 500 Internal Server Error: znajdź przyczynę w logach i przywróć stronę
- Błąd 502 Bad Gateway: znajdź przyczynę i napraw
- Błąd 503: przeciążenie, konserwacja czy limit hostingu?
- Błąd 504 Gateway Timeout: znajdź, co spowalnia stronę
- DNS_PROBE_FINISHED_NXDOMAIN: domena przestała odpowiadać
- ERR_CONNECTION_REFUSED: serwer odrzuca połączenie
- ERR_CONNECTION_TIMED_OUT: serwer nie odpowiada na czas
- Co oznacza „Połączenie nie jest prywatne” i jak to naprawić
- ERR_SSL_PROTOCOL_ERROR: bezpieczne połączenie zawodzi przed certyfikatem
- ERR_TOO_MANY_REDIRECTS: znajdź pętlę przekierowań i ją przerwij
- Błąd 403 Forbidden: co blokuje dostęp do Twojej strony
- ERR_NAME_NOT_RESOLVED: nie można znaleźć nazwy strony
- „Błąd podczas nawiązywania połączenia z bazą danych” w WordPressie: przyczyna i naprawa
- ERR_CONNECTION_RESET: dlaczego połączenie zrywa się w połowie
- Błąd 429 Too Many Requests: który limit blokuje odwiedzających
- ERR_EMPTY_RESPONSE: serwer nie wysłał żadnych danych
- Błąd krytyczny WordPress: znajdź przyczynę i przywróć stronę