Ошибка Cloudflare 521: веб-сервер не отвечает - причины и решения
Ошибка Cloudflare 521 означает, что Cloudflare достучался до IP-адреса вашего origin, но сервер активно отказал в соединении, обычно потому что на порту, к которому пытался подключиться Cloudflare, никто не слушает, запрос заблокировал файрвол, либо сам веб-сервер остановлен. Это отличается от таймаута: что-то на origin сразу же ответило "нет".
Что означает ошибка 521
Когда Cloudflare проксирует запрос, он открывает TCP-соединение с вашим origin-сервером на порту, настроенном для этой записи. Ошибка 521 срабатывает, когда origin в ответ присылает сброс TCP (RST) или ICMP "connection refused" вместо того, чтобы принять соединение. Это однозначный отказ, а не молчание. Сравните с ошибкой 522, где Cloudflare вообще не получает ответа в пределах своего таймаута, или с ошибкой 520, где соединение устанавливается успешно, но следующий за ним HTTP-ответ оказывается сломанным.
Как проявляется ошибка 521
Посетители видят собственную страницу Cloudflare: "Error 521: web server is down" вместе с Ray ID. Запрос curl к домену вернет тот же статус:
curl -I https://example.com
HTTP/2 521
Поскольку origin отказал в соединении на сетевом уровне, до вашего приложения ничего не доходит, поэтому логи приложения обычно вообще ничего не покажут для провалившихся запросов. Свидетельства лежат ближе к сети: собственные логи запуска и доступа вашего веб-сервера, логи соединений вашего файрвола или security group, а также системные логи на хосте origin (journalctl -u nginx, systemctl status nginx или эквивалент для вашего стека).
Что вызывает ошибку 521
- Процесс веб-сервера остановлен или упал. На порту вообще никто не слушает, поэтому любая попытка соединения отклоняется немедленно.
- Cloudflare настроен на обращение не к тому порту. Если порт origin, заданный в DNS-записи или в сетевых настройках Cloudflare, не совпадает с тем, что реально слушает ваш сервер, любое соединение будет отклонено.
- Файрвол или облачная security group блокирует диапазоны IP Cloudflare. Если правило допускает только определенные исходные IP, а актуальные диапазоны Cloudflare в него не входят, либо входили раньше и были удалены, соединения с edge-узлов Cloudflare отбрасываются или отклоняются.
- Режим SSL/TLS выставлен на Full или Full strict, но на origin никто не слушает порт 443. Эти режимы требуют, чтобы Cloudflare подключался к origin по HTTPS; если origin отдает только обычный HTTP или настройка сертификата так и не завершилась, попытка HTTPS-соединения отклоняется.
- Порт, который должен использовать веб-сервер, уже занят посторонним сервисом, из-за чего сам веб-сервер так и не запускается.
521 против 523 против 522
Эти три кода легко перепутать, поскольку все они описывают соединение, так и не породившее HTTP-ответ, однако каждый означает, что Cloudflare провалился на своем этапе.
- 521, web server is down: Cloudflare достучался до IP-адреса origin, и там что-то активно отказало в соединении (сброс TCP или недостижимость ICMP). Сервер существует и ответил, просто отказом.
- 523, origin is unreachable: Cloudflare даже не смог дойти до этого. Это указывает на проблему маршрутизации, DNS или IP - чаще всего DNS-запись в Cloudflare, все еще указывающая на старый IP после миграции сервера, либо упавший приватный сетевой маршрут (например, Cloudflare Tunnel).
- 522, connection timed out: Cloudflare попытался выполнить TCP-рукопожатие, но не получил ответа вовремя - ни согласия, ни отказа. См. отдельное руководство по ошибке Cloudflare 522 для этого случая.
Как понять, кто виноват
521 - сильный сигнал, что проблема на стороне origin относительно edge Cloudflare, поскольку отказ пришел от вашего собственного сервера или от сети непосредственно перед ним. Практически важный вопрос - затрагивает ли это весь сайт или часть трафика, и быстрее всего это проверить, запустив HTTP-проверку из нескольких мест одновременно. HTTP-проверка HostTracker опрашивает домен из контрольных точек в нескольких странах и сообщает результат каждой отдельно, так что вы сразу увидите, получают ли одну и ту же 521 все точки или только часть, что укажет на частичное правило файрвола или балансировщик с одним нездоровым бэкендом, а не на то, что весь сервер лежит.
Как исправить ошибку 521
Если вы посетитель
- Перезагрузите страницу после недолгого ожидания. Если оператор сайта перезапускает сервер, исправление может уже быть в процессе.
- Проверьте статус-страницу сайта, если она есть, либо его соцсети - на предмет известного уведомления о сбое.
- На своей стороне менять нечего. Отказ происходит на собственном сервере сайта, а не в вашем браузере, DNS или у провайдера.
Если вы администрируете сайт
- Убедитесь, что процесс веб-сервера действительно запущен:
systemctl status nginx(или эквивалент), и проверьте его логи на предмет падения или неудачного перезапуска. - Убедитесь, что порт, на который настроен Cloudflare, совпадает с тем, что слушает ваш сервер. Сверьте порт origin в настройках DNS-записи или Network в панели управления Cloudflare с реальными слушающими портами вашего сервера (
ss -tlnpв Linux). - Проверьте, что ваш файрвол или облачная security group разрешает входящий трафик от актуальных опубликованных диапазонов IP Cloudflare на этом порту. Cloudflare публикует свои текущие диапазоны IPv4 и IPv6 на cloudflare.com/ips; правило, построенное по старой копии этого списка, начнет отклонять новые диапазоны по мере их добавления.
- Если ваш режим шифрования SSL/TLS - Full или Full strict, убедитесь, что на порту 443 на origin действительно кто-то слушает с сертификатом, который Cloudflare может проверить. Временное переключение на Flexible - полезный диагностический шаг, чтобы подтвердить именно эту причину, а не постоянное решение, поскольку Flexible оставляет соединение между Cloudflare и вашим origin незашифрованным.
- Обойдите Cloudflare, чтобы проверить origin напрямую и увидеть сырой отказ без промежуточного edge-слоя:
"Connection refused" здесь подтверждает, что проблема в слушателе или файрволе на origin, а не в Cloudflare.curl -v -H "Host: example.com" https://ORIGIN_IP:PORT/ - Проверьте, не занял ли этот порт что-то другое на хосте, - это помешало бы веб-серверу привязаться к нему при запуске.
Как это предотвратить
Правило файрвола, допускающее только диапазоны Cloudflare, - частая причина, по которой 521 возвращается месяцы спустя, поскольку Cloudflare со временем добавляет и выводит из обращения диапазоны IP, а правило, скопированное один раз, со временем устаревает. HTTP-проверка, запускаемая снаружи вашей сети, ловит возникающий из-за этого сбой так же, как его увидел бы посетитель, вместо того чтобы полагаться на то, что кто-то заметит недоступность сайта и сообщит о ней.
Похожие ошибки
- Ошибка Cloudflare 520: неизвестная ошибка - origin ответил, но ответ не удалось передать дальше.
- Ошибка Cloudflare 522: истекло время соединения - рукопожатие вообще не получило ответа.
- Ошибки сервера 5xx - общее семейство кодов состояния.
- 502 Bad Gateway - версия сбоя upstream, не привязанная конкретно к Cloudflare.
Часто задаваемые вопросы
Означает ли ошибка 521 то же самое, что физическое выключение сервера?
Не обязательно. Она означает, что что-то отклонило TCP-соединение, а это может быть остановленный процесс веб-сервера при работающей самой машине, отказ файрвола, несовпадение режима TLS, а также действительно упавший сервер.
Как быстрее всего подтвердить, что причина в файрволе?
Обратитесь к origin напрямую по его IP-адресу с заголовком Host домена, минуя Cloudflare. Если и там будет отказ, блокировка, скорее всего, находится в собственном файрволе или security group origin, а не связана конкретно с диапазонами IP Cloudflare.
Почему ошибка 521 может начаться без каких-либо изменений на моем сервере?
Cloudflare периодически обновляет свои опубликованные диапазоны IP. Правило файрвола, построенное по старой копии этого списка, перестает совпадать с недавно добавленными диапазонами, поэтому запросы из них отклоняются, хотя на вашем собственном сервере ничего не менялось.
Исправляет ли переключение SSL/TLS в режим Flexible ошибку 521 навсегда?
Оно может замаскировать несовпадение в режиме Full или Full strict, поскольку Flexible не требует HTTPS на origin, но при этом соединение между Cloudflare и вашим сервером остается незашифрованным. Относитесь к нему как к диагностическому шагу, затем исправьте TLS-слушатель на origin и переключитесь обратно.
Чем 521 отличается от 523?
521 означает, что Cloudflare достучался до origin и получил отказ. 523 означает, что Cloudflare вообще не смог до него достучаться, что указывает на DNS, маршрутизацию или сломанный туннель, а не на что-либо, сделанное самим сервером origin.