Почему возникает ошибка «Too Many Redirects» при работе с Cloudflare
Одна из самых распространённых проблем после подключения Cloudflare — бесконечные редиректы, из-за которых сайт перестаёт открываться, а браузер показывает ошибку ERR_TOO_MANY_REDIRECTS.
Во многих случаях причина оказывается вовсе не в самом Cloudflare, а в неправильном сочетании его настроек и конфигурации сайта.
Разберёмся, как работают режимы SSL и почему иногда возникает циклический редирект.
Как Cloudflare работает с HTTPS
Когда пользователь открывает сайт, запрос сначала попадает на серверы Cloudflare, а уже затем передаётся на ваш сервер.
Важно понимать, что соединение состоит из двух независимых участков:
От браузера пользователя до Cloudflare.
От Cloudflare до вашего сервера.
Именно второй участок определяет выбранный режим SSL.
Режим Flexible
В режиме Flexible пользователь открывает сайт по HTTPS.
Однако Cloudflare подключается к вашему серверу уже по обычному HTTP (порт 80).
Схема выглядит так:
Пользователь - -> HTTPS - -> Cloudflare - -> HTTP - -> Ваш сервер
Такой режим обычно используют, если на сервере отсутствует SSL-сертификат.
На первый взгляд всё работает корректно, однако именно здесь чаще всего появляются проблемы.
Режим Full
В режиме Full соединение между Cloudflare и сервером также происходит по HTTPS.
При этом Cloudflare не проверяет, кем был выпущен сертификат.
Он может быть:
самоподписанным;
внутренним;
просроченным.
Главное — наличие SSL-соединения.
Схема становится такой:
Пользователь - -> HTTPS - -> Cloudflare - -> HTTPS - -> Ваш сервер
Режим Full (Strict)
Этот режим работает аналогично предыдущему, но предъявляет дополнительные требования к сертификату.
Cloudflare проверяет, чтобы сертификат:
был действующим;
не был просрочен;
был выпущен доверенным центром сертификации (или Cloudflare Origin CA).
Именно Full (Strict) считается рекомендуемым вариантом для большинства современных проектов.
Откуда берётся циклический редирект
Наиболее часто проблема встречается на WordPress, хотя аналогичная ситуация может возникнуть и в других CMS.
Представим следующую конфигурацию:
в Cloudflare выбран режим Flexible;
в настройках WordPress указан HTTPS;
либо на сайте включён плагин принудительного HTTPS;
либо веб-сервер автоматически перенаправляет HTTP на HTTPS.
Что происходит дальше?
Шаг 1
Пользователь открывает сайт по HTTPS.
Запрос приходит в Cloudflare.
Шаг 2
Cloudflare работает в режиме Flexible и отправляет запрос серверу уже по HTTP.
Шаг 3
WordPress получает HTTP-запрос.
Но в настройках сайта указано, что ресурс должен работать только через HTTPS.
CMS отвечает:
«Нужно перейти на HTTPS.»
И отправляет браузеру редирект 301.
Шаг 4
Браузер снова обращается к Cloudflare по HTTPS.
Cloudflare снова пересылает запрос на сервер по HTTP.
WordPress снова отвечает редиректом.
И так бесконечно.
В результате браузер прерывает соединение и показывает ошибку ERR_TOO_MANY_REDIRECTS.
Как избежать этой проблемы
В большинстве случаев решение достаточно простое.
Если на сервере установлен SSL-сертификат, лучше использовать режим Full или Full (Strict) вместо Flexible.
Также стоит убедиться, что:
настройки HTTPS в CMS соответствуют выбранному режиму Cloudflare;
веб-сервер не создаёт лишних редиректов;
плагины принудительного HTTPS не конфликтуют с конфигурацией сервера;
после изменения режима очищен кэш Cloudflare и браузера.
Какой режим SSL выбрать
Если кратко:
РежимКогда использоватьFlexibleТолько если на сервере вообще нет SSL-сертификатаFullЕсть сертификат, но его валидность не имеет значенияFull (Strict)Рекомендуемый вариант для большинства сайтов с корректно настроенным SSL
Вывод
Ошибка Too Many Redirects после подключения Cloudflare чаще всего связана не с неисправностью сервиса, а с несогласованными настройками SSL между Cloudflare, веб-сервером и CMS.
Перед поиском сложных причин стоит проверить режим работы SSL, настройки HTTPS в системе управления сайтом и правила редиректов на сервере. Во многих случаях именно это позволяет устранить проблему за несколько минут.
