В режиме Flexible браузер подключается к Cloudflare по HTTPS, а Cloudflare обращается к origin по HTTP. Если сервер принудительно перенаправляет HTTP на HTTPS, прокси снова приходит по HTTP, и цикл повторяется.

Лучшее постоянное решение — настроить HTTPS на origin и переключиться на Full (strict). Перед изменением проверьте сертификат, порт 443 и правила firewall.

Что сделать в первую очередь

  • Сохраните цепочку Location через curl без cookie.
  • Проверьте текущий режим SSL/TLS в Cloudflare.
  • Убедитесь, что origin отвечает по HTTPS напрямую с корректным Host.
  • Проверьте Page Rules, Redirect Rules и правила приложения.

Почему возникает проблема

Симптом обычно появляется не из-за одной настройки. Сначала разделите путь данных на этапы и найдите место, где фактическое поведение расходится с ожидаемым.

  • Flexible соединяется с origin по HTTP, а origin всегда требует HTTPS.
  • Приложение не доверяет заголовку X-Forwarded-Proto от известного прокси.
  • Одновременно действуют несколько конфликтующих правил редиректа.
  • Cookie или настройка канонического URL переключает схему обратно.

Пошаговая диагностика

  • Проследите каждый ответ 301 и 302 до повторения URL.
  • Сравните запрос через Cloudflare и прямой запрос к origin.
  • Проверьте scheme, Host и forwarded headers в журнале приложения.
  • Временно отключайте правила по одному, сохраняя безопасный доступ.
  • Проверьте канонический URL CMS и настройки HTTPS за reverse proxy.

Как исправить

Исправляйте подтвержденную первопричину и сохраняйте возможность отката. После каждого изменения повторяйте один и тот же контрольный сценарий, чтобы не спутать результат нескольких правок.

  • Установите валидный сертификат на origin и откройте 443 только нужным источникам.
  • Переключите Cloudflare на Full (strict).
  • Настройте приложение доверять forwarded headers только от доверенного прокси.
  • Оставьте одно понятное правило перенаправления на HTTPS.
  • Очистите edge cache и тестовые cookie после изменения схемы.

Как проверить результат

  • HTTP делает один переход на HTTPS, затем страница возвращает 200.
  • HTTPS между Cloudflare и origin проходит строгую проверку сертификата.
  • Админка, формы, API и статические файлы не создают дополнительных циклов.

Как не допустить повторения

  • Используйте Full (strict) как рабочий режим.
  • Документируйте, где именно выполняется канонический редирект.
  • Мониторьте сертификат origin и срок его действия.

Частые вопросы

Можно ли оставить Flexible и убрать редирект на сервере?

Это может остановить цикл, но участок Cloudflare–origin останется без HTTPS. Для рабочего сайта лучше Full (strict).

Подойдет ли Cloudflare Origin Certificate?

Да, если к origin обращается Cloudflare и вы понимаете, что обычные браузеры такому сертификату напрямую не доверяют.

Когда стоит обратиться за помощью

Для диагностики достаточно домена, цепочки редиректов и обезличенной конфигурации прокси. Приватный ключ сертификата передавать нельзя.

Итог

Цикл исчезает, когда схема запроса однозначна на всех участках. Я могу настроить origin HTTPS, доверенные proxy headers и безопасные правила Cloudflare без простоя.