Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

ERR_TOO_MANY_REDIRECTS Linux / DevOps

Траблшутинг циклических редиректов (301/302 Redirect Loop) в Nginx и Apache

Обновлено: 21.08.2026
  • Браузер возвращает ошибку ERR_TOO_MANY_REDIRECTS.
  • Утилита curl -IL фиксирует бесконечную цепочку ответов HTTP 301/302 между HTTP и HTTPS.
  • SSL-терминация на балансировщике (Cloudflare, AWS ALB, Nginx) вызывает цикл из-за отсутствия передачи реальной схемы бэкенду.

1. Трассировка цепочки редиректов через curl

curl -IL -k -H "User-Agent: Mozilla/5.0" https://example.com

2. Исправление SSL Offloading в Nginx

Если перед Nginx стоит внешний CDN/балансировщик, проксирующий трафик по HTTP, добавьте проверку заголовка X-Forwarded-Proto:

server {
    listen 80;
    server_name example.com www.example.com;

    # Проверка схемы от вышестоящего прокси
    if ($http_x_forwarded_proto = 'http') {
        return 301 https://$host$request_uri;
    }
}

Или стандартный безусловный редирект для прямого трафика:

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

3. Исправление циклических правил в Apache (.htaccess)

Отредактируйте .htaccess с учетом SSL-терминации:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

4. Проверка и перезагрузка

nginx -t && systemctl reload nginx
apachectl configtest && systemctl reload apache2
💡 Практика специалистов: При отладке правил всегда используйте временный код редиректа 302 (R=302), чтобы избежать жесткого кэширования в браузерах разработчиков. Переключайтесь на 301 только после финальной валидации всей цепочки.

Частые вопросы (FAQ)

Почему Cloudflare вызывает циклический редирект при режиме SSL Flexible?

В режиме Flexible Cloudflare запрашивает бэкенд по незашифрованному HTTP (порт 80). Если сервер настроен на принудительный редирект с HTTP на HTTPS, бэкенд отправляет 301 редирект обратно в Cloudflare, образуя бесконечный цикл. Решение — переключить Cloudflare в режим 'Full (Strict)' или анализировать заголовок X-Forwarded-Proto.

Как сбросить кэш 301 редиректа в браузере?

HTTP 301 (Moved Permanently) агрессивно кэшируется браузерами на диске. Для сброса используйте режим инкогнито, DevTools с включенным 'Disable cache' или горячие клавиши Ctrl+F5.

Полезные материалы
Рекомендуем