Ошибка 520 Cloudflare: что значит и как исправить

Advertisement
Что такое ошибка Cloudflare 520?
Ошибка 520 — один из собственных кодов состояния Cloudflare. На странице написано «Web server is returning an unknown error» и Error code 520, указан Ray ID и показаны три блока: ваш браузер (работает), Cloudflare (работает) и хост (ошибка).
В документации Cloudflare она описана так: «исходный сервер возвращает Cloudflare пустой, неизвестный или неожиданный ответ». Иными словами, Cloudflare подключился к настоящему серверу сайта (origin), но получил не корректный HTTP-ответ, который можно передать дальше, а что-то другое: ответ без кода состояния, пустой ответ, сброшенное соединение или данные, которые не удалось разобрать.
520 — код «на все остальные случаи». Когда Cloudflare может определить, что именно пошло не так (отказ в соединении, тайм-аут, сбой SSL), он использует более конкретные коды, поэтому 520 означает, что исходный сервер ответил так, что Cloudflare не смог это классифицировать.
Ошибка 520 и 521, 522, 523, 524, 525, 526: в чём разница
Все коды 52x у Cloudflare описывают проблему между Cloudflare и исходным сервером. Номер подсказывает, где искать:
| Код | Текст на странице | Что произошло |
|---|---|---|
| 520 | Web server is returning an unknown error | Пустой, неизвестный или неожиданный ответ от исходного сервера |
| 521 | Web server is down | Исходный сервер отклонил соединение |
| 522 | Connection timed out | Cloudflare не смог установить соединение с исходным сервером |
| 523 | Origin is unreachable | Нет маршрута до исходного сервера (проверьте его IP в DNS) |
| 524 | A timeout occurred | Соединение установлено, но исходный сервер не ответил вовремя |
| 525 | SSL handshake failed | HTTPS-рукопожатие с исходным сервером не удалось |
| 526 | Invalid SSL certificate | Сертификат исходного сервера недействителен для режима Full (strict) |
Если на странице просто 502 или 504, смотрите 502 Bad Gateway и 504 Gateway Timeout. При 521 и 522 проверьте снаружи с помощью Port Checker, принимает ли порт 443 или 80 исходного сервера соединения. При 525 и 526 SSL Checker покажет сертификат исходного сервера, а в статье ERR_SSL_VERSION_OR_CIPHER_MISMATCH разобраны проблемы с версиями TLS и шифрами.
Advertisement
Причины ошибки 520
В документации по устранению неполадок Cloudflare перечисляет такие причины:
Исходный сервер падает или неправильно настроен — например, процесс PHP или Node завершается посреди запроса.
Файрвол или защитный плагин блокирует IP-адреса Cloudflare на исходном сервере, и соединения обрываются вместо ответа.
Заголовки ответа больше 128 КБ — часто из-за слишком большого числа cookie или слишком больших cookie.
Пустые или искажённые ответы без кода состояния HTTP и без тела.
Отсутствующие заголовки ответа или исходный сервер, который не возвращает нормальные HTTP-ответы с ошибками.
Неправильная настройка HTTP/2 на исходном сервере при включённой функции HTTP/2 to Origin.
Authenticated Origin Pulls включены в Cloudflare, а исходный сервер для этого не настроен.
Если вы посетитель сайта
Исправить сервер сайта вы не можете, но две вещи попробовать стоит. Обновите страницу через минуту: ошибка 520, вызванная сбоем или перезапуском, может пройти сама. И удалите cookie сайта: если причина в слишком больших заголовках из-за cookie, удаление cookie этого сайта (значок слева от адресной строки → Файлы cookie и данные сайтов) может решить проблему для вас.
Если ошибка не проходит, сообщите владельцу сайта и укажите Ray ID внизу страницы ошибки — по нему он найдёт ваш конкретный запрос в Cloudflare.
Advertisement
Решение 1: прочитайте журналы ошибок исходного сервера
Первая рекомендация Cloudflare — посмотреть журналы исходного сервера за время ошибки. Сбои, завершения процессов из-за нехватки памяти и сбросы соединений видны именно там:
sudo tail -n 50 /var/log/nginx/error.log # или /var/log/apache2/error.log
journalctl -u your-app --since "15 min ago" # логи сервиса приложения
pm2 logs --lines 50 # Node-приложения под PM2
dmesg -T | grep -i "killed process" # процессы, убитые из-за нехватки памятиРешение 2: проверьте исходный сервер без Cloudflare
Запросите страницу напрямую у исходного сервера в обход Cloudflare и посмотрите на «сырой» ответ. С помощью curl можно направить имя хоста на IP исходного сервера для одного запроса:
# Замените 203.0.113.10 на IP вашего исходного сервера
curl -sv --resolve example.com:443:203.0.113.10 https://example.com/broken-page -o /dev/null
# Ищите обычную строку статуса "HTTP/1.1 200" (или HTTP/2 200) и заголовки.
# "Empty reply from server" или "Connection reset by peer" здесь воспроизводят ошибку 520.Cloudflare также предлагает временный обходной путь: переключите DNS-запись в режим DNS only (серое облако) или приостановите Cloudflare, чтобы посетители попадали на исходный сервер напрямую, пока вы разбираетесь. Учтите, что так раскрывается IP исходного сервера. DNS Lookup от DNS Robot показывает, какие IP-адреса для вашего домена сейчас видит весь мир, а инструмент HTTP Headers показывает заголовки server: cloudflare и cf-ray, когда трафик идёт через Cloudflare.
Advertisement
Решение 3: разрешите диапазоны IP-адресов Cloudflare на исходном сервере
Весь трафик посетителей приходит на исходный сервер с IP-адресов Cloudflare, поэтому файрвол, jail в fail2ban или защитный плагин, который ограничивает или блокирует «подозрительные» IP, может в итоге заблокировать сам Cloudflare. Разрешите диапазоны, опубликованные на https://www.cloudflare.com/ips/, в файрволе и защитных плагинах и убедитесь, что веб-сервер берёт реальный IP посетителя из заголовка CF-Connecting-IP, чтобы ограничения применялись к посетителям, а не к Cloudflare.
Решение 4: держите заголовки ответа меньше 128 КБ
Cloudflare отклоняет ответы исходного сервера, заголовки которых больше 128 КБ, и обычно виноваты cookie. Проверьте, сколько заголовков Set-Cookie отправляет страница и насколько они большие. Удалите ненужные cookie, делайте сессионные cookie небольшими и избегайте приложений и плагинов, которые записывают в cookie большие объёмы данных.
Advertisement
Решение 5: проверьте HTTP/2 to Origin и Authenticated Origin Pulls
HTTP/2 to Origin: если эта функция включена в Cloudflare (в настройках Speed), а HTTP/2 на исходном сервере настроен с ошибками, ответы могут завершаться ошибкой 520. Cloudflare советует проверить настройку HTTP/2 на исходном сервере или для проверки отключить HTTP/2 to Origin.
Authenticated Origin Pulls: если эта функция включена в Cloudflare, исходный сервер должен быть настроен на приём клиентского сертификата Cloudflare. Если это не так, отключите функцию или завершите настройку исходного сервера.
Решение 6: что отправить в поддержку Cloudflare
Если исходный сервер выглядит исправным, а ошибка 520 не проходит, Cloudflare просит прислать:
Полные URL-адреса, на которых возникает ошибка.
Идентификатор cf-ray со страницы ошибки.
Вывод
http://yourdomain.com/cdn-cgi/trace.Два HAR-файла (DevTools → Network → экспорт): один с включённым Cloudflare и один с отключённым.
Узнайте, работает ли сайт через Cloudflare
HTTP Headers Checker от DNS Robot показывает код состояния, заголовок server и cf-ray ID для любого URL, чтобы вы могли подтвердить ошибку 520 и проверить, стоит ли перед сайтом Cloudflare.
Попробовать HTTP Headers CheckerAdvertisement
Часто задаваемые вопросы
Это ошибка Cloudflare, которая означает, что исходный сервер сайта вернул Cloudflare пустой, неизвестный или неожиданный ответ. Ваш браузер и Cloudflare работают, а исходный сервер отвечает неправильно.