Błąd 520 Cloudflare: co oznacza i jak naprawić

Advertisement
Czym jest błąd 520 Cloudflare?
Błąd 520 to jeden z własnych kodów statusu Cloudflare. Strona błędu wyświetla „Web server is returning an unknown error” z kodem Error code 520, identyfikatorem Ray ID i trzema polami: Twoja przeglądarka (działa), Cloudflare (działa) i host (błąd).
Dokumentacja Cloudflare definiuje go tak: serwer źródłowy zwraca do Cloudflare pustą, nieznaną lub nieoczekiwaną odpowiedź („the origin server returns an empty, unknown, or unexpected response to Cloudflare”). Innymi słowy, Cloudflare połączył się z prawdziwym serwerem strony (serwerem źródłowym, ang. origin), ale to, co wróciło, nie było prawidłową odpowiedzią HTTP, którą mógłby przekazać dalej: brakowało kodu statusu, odpowiedź była pusta, połączenie zostało zresetowane albo przyszło coś, czego nie dało się przetworzyć.
520 to kod zbiorczy. Gdy Cloudflare potrafi określić, co poszło nie tak (odrzucone połączenie, przekroczenie czasu, błąd SSL), używa bardziej szczegółowych kodów, więc 520 oznacza, że serwer źródłowy odpowiedział w sposób, którego Cloudflare nie umiał sklasyfikować.
Błąd 520 a 521, 522, 523, 524, 525 i 526
Wszystkie kody 52x w Cloudflare opisują problem między Cloudflare a serwerem źródłowym. Numer podpowiada, gdzie szukać:
| Kod | Tekst na stronie | Co się stało |
|---|---|---|
| 520 | Web server is returning an unknown error | Pusta, nieznana lub nieoczekiwana odpowiedź z serwera źródłowego |
| 521 | Web server is down | Serwer źródłowy odrzucił połączenie |
| 522 | Connection timed out | Cloudflare nie zdołał nawiązać połączenia z serwerem źródłowym |
| 523 | Origin is unreachable | Brak trasy do serwera źródłowego (sprawdź adres IP serwera w DNS) |
| 524 | A timeout occurred | Połączenie nawiązane, ale serwer źródłowy nie odpowiedział na czas |
| 525 | SSL handshake failed | Uzgadnianie HTTPS z serwerem źródłowym nie powiodło się |
| 526 | Invalid SSL certificate | Certyfikat serwera źródłowego nie jest ważny dla trybu Full (strict) |
Jeśli strona pokazuje zamiast tego zwykły błąd 502 lub 504, zobacz 502 Bad Gateway i 504 Gateway Timeout. Przy błędach 521 i 522 sprawdź z zewnątrz za pomocą Port Checker, czy port 443 lub 80 serwera źródłowego przyjmuje połączenia. Przy błędach 525 i 526 SSL Checker pokazuje certyfikat serwera źródłowego, a poradnik ERR_SSL_VERSION_OR_CIPHER_MISMATCH omawia problemy z wersją TLS i szyframi.
Advertisement
Co powoduje błąd 520?
Cloudflare wymienia w swojej dokumentacji rozwiązywania problemów następujące przyczyny:
Serwer źródłowy ulega awarii lub jest źle skonfigurowany, na przykład proces PHP lub Node kończy działanie w trakcie żądania.
Zapora lub wtyczka bezpieczeństwa blokuje adresy IP Cloudflare na serwerze źródłowym, więc połączenia są zrywane zamiast obsługiwane.
Nagłówki odpowiedzi przekraczają 128 KB, często z powodu zbyt wielu lub zbyt dużych ciasteczek.
Puste lub uszkodzone odpowiedzi bez kodu statusu HTTP ani treści.
Brakujące nagłówki odpowiedzi albo serwer źródłowy, który nie zwraca prawidłowych odpowiedzi błędów HTTP.
Nieprawidłowa konfiguracja HTTP/2 na serwerze źródłowym przy włączonej opcji HTTP/2 to Origin.
Authenticated Origin Pulls włączone w Cloudflare, gdy serwer źródłowy nie jest do tego skonfigurowany.
Jeśli jesteś odwiedzającym
Nie naprawisz serwera strony, ale warto spróbować dwóch rzeczy. Odśwież stronę po minucie, bo błąd 520 spowodowany awarią lub restartem może zniknąć sam. I wyczyść ciasteczka strony: gdy przyczyną są zbyt duże nagłówki zbudowane z ciasteczek, usunięcie ciasteczek tej strony (ikona po lewej stronie paska adresu → Pliki cookie i dane witryn) może rozwiązać problem po Twojej stronie.
Jeśli błąd się powtarza, powiadom właściciela strony i podaj Ray ID z dołu strony błędu, dzięki któremu znajdzie Twoje konkretne żądanie w Cloudflare.
Advertisement
Rozwiązanie 1: Przeczytaj logi błędów serwera źródłowego
Pierwsze zalecenie Cloudflare to przejrzenie logów serwera źródłowego z chwili wystąpienia błędu. Widać w nich awarie, zabicia procesów z braku pamięci i resety połączeń. Poniższe polecenia pokazują kolejno log błędów nginx (lub Apache), logi usługi aplikacji, logi aplikacji Node uruchomionych pod PM2 i procesy zabite z powodu braku pamięci (out-of-memory):
sudo tail -n 50 /var/log/nginx/error.log # or /var/log/apache2/error.log
journalctl -u your-app --since "15 min ago" # app service logs
pm2 logs --lines 50 # Node apps under PM2
dmesg -T | grep -i "killed process" # out-of-memory killsRozwiązanie 2: Przetestuj serwer źródłowy bez Cloudflare
Pobierz stronę bezpośrednio z serwera źródłowego, z pominięciem Cloudflare, i obejrzyj surową odpowiedź. Za pomocą curl możesz na czas jednego żądania wskazać nazwę hosta na adres IP serwera źródłowego:
# Zastąp 203.0.113.10 adresem IP swojego serwera źródłowego
curl -sv --resolve example.com:443:203.0.113.10 https://example.com/broken-page -o /dev/null
# Szukaj: zwykłej linii statusu "HTTP/1.1 200" (lub HTTP/2 200) i nagłówków.
# "Empty reply from server" lub "Connection reset by peer" w tym miejscu odtwarza błąd 520.Cloudflare sugeruje też tymczasowe obejście: ustaw rekord DNS na DNS only (szara chmurka) albo wstrzymaj Cloudflare, aby odwiedzający trafiali bezpośrednio na serwer źródłowy, gdy szukasz przyczyny. Pamiętaj, że ujawnia to adres IP serwera źródłowego. DNS Lookup od DNS Robot pokazuje, jakie adresy IP świat widzi obecnie dla Twojej domeny, a narzędzie HTTP Headers pokazuje nagłówki server: cloudflare i cf-ray, gdy ruch przechodzi przez Cloudflare.
Advertisement
Rozwiązanie 3: Dopuść zakresy IP Cloudflare na serwerze źródłowym
Cały ruch odwiedzających trafia na Twój serwer źródłowy z zakresów IP Cloudflare, więc zapora, reguła (jail) fail2ban lub wtyczka bezpieczeństwa, która ogranicza lub blokuje „podejrzane” adresy IP, może w końcu zablokować sam Cloudflare. Dopuść zakresy opublikowane pod adresem https://www.cloudflare.com/ips/ w zaporze i wtyczkach bezpieczeństwa oraz upewnij się, że serwer WWW odczytuje prawdziwy adres IP odwiedzającego z nagłówka CF-Connecting-IP, aby limity żądań dotyczyły odwiedzających, a nie Cloudflare.
Rozwiązanie 4: Utrzymuj nagłówki odpowiedzi poniżej 128 KB
Cloudflare odrzuca odpowiedzi serwera źródłowego, których nagłówki przekraczają 128 KB, a zwykle winne są ciasteczka. Sprawdź, ile nagłówków Set-Cookie wysyła strona i jak są duże. Usuń ciasteczka, których już nie potrzebujesz, utrzymuj małe ciasteczka sesji i unikaj aplikacji oraz wtyczek, które zapisują w ciasteczkach duże ilości danych.
Advertisement
Rozwiązanie 5: Sprawdź HTTP/2 to Origin i Authenticated Origin Pulls
HTTP/2 to Origin: jeśli ta opcja jest włączona w Cloudflare (w ustawieniach Speed), a konfiguracja HTTP/2 na serwerze źródłowym jest wadliwa, odpowiedzi mogą kończyć się błędem 520. Cloudflare zaleca sprawdzenie konfiguracji HTTP/2 serwera źródłowego albo wyłączenie HTTP/2 to Origin, aby to potwierdzić.
Authenticated Origin Pulls: jeśli ta funkcja jest włączona w Cloudflare, serwer źródłowy musi być skonfigurowany do akceptowania certyfikatu klienta Cloudflare. Jeśli nie jest, wyłącz tę funkcję albo dokończ konfigurację serwera źródłowego.
Rozwiązanie 6: Co wysłać do wsparcia Cloudflare
Jeśli serwer źródłowy wygląda na sprawny, a błąd 520 nie znika, Cloudflare prosi o:
Pełne adresy URL, pod którymi występuje błąd.
Identyfikator cf-ray ze strony błędu.
Wynik
http://yourdomain.com/cdn-cgi/trace.Dwa pliki HAR (DevTools → Sieć → eksport), jeden z włączonym Cloudflare i jeden z wyłączonym.
Sprawdź, czy strona działa za Cloudflare
HTTP Headers Checker od DNS Robot pokazuje kod statusu, nagłówek server i identyfikator cf-ray dowolnego adresu URL, dzięki czemu potwierdzisz błąd 520 i sprawdzisz, czy przed stroną stoi Cloudflare.
Wypróbuj HTTP Headers CheckerAdvertisement
Często zadawane pytania
To błąd Cloudflare oznaczający, że serwer źródłowy strony zwrócił do Cloudflare pustą, nieznaną lub nieoczekiwaną odpowiedź. Twoja przeglądarka i Cloudflare działają; to serwer źródłowy nie odpowiada prawidłowo.