Ошибка HTTP 429 “Too Many Requests” – это код ответа с ограничением скорости, отправляемый сервером, когда пользователь (или клиент) превышает количество разрешенных запросов в течение заданного периода времени. Этот статус обычно является частью механизмов безопасности, защиты API или защиты от DDoS.
В производственных средах он может прерывать работу сервисов, нарушать интеграцию API или влиять на SEO. В этом продвинутом руководстве рассказывается о том, как диагностировать, предотвратить и устранить ошибку 429 как со стороны клиента, так и со стороны сервера.
Распространенные сценарии:
Пользователь/бот отправляет слишком много HTTP-запросов (вызовы API, загрузка страниц и т. д.)
Ваше приложение слишком активно использует сторонние сервисы для скраппинга или опроса
Брандмауэры веб-приложений (WAF) или обратные прокси (например, Cloudflare, Nginx) устанавливают ограничения скорости
Серверные или внутренние API-интерфейсы используют библиотеки ограничения скорости (например, express-rate-limit, mod_evasive и т. д.)
Боты или краулеры наводняют веб-сайт или конечную точку
Серверы часто отправляют заголовок Retry-After вместе с ответом 429:
Это указывает клиенту, сколько времени нужно подождать (в секундах) перед повторной попыткой.
Для Apache:
Для Nginx:
Это поможет определить, на каких IP-адресах или конечных точках срабатывает ограничение.
Журналы Fail2Ban
События брандмауэра Cloudflare
Журналы на уровне приложений (Laravel, Express, Django и т. д.)
Аналитика ограничения скорости (при использовании API-шлюза)
Nginx может быть настроен следующим образом:
Увеличьте скорость или скорость передачи данных
Применять к определенным путям (например, /api/), а не глобально
Занести в белый список известные внутренние IP-адреса
Если mod_evasive активен:
Настроить:
➡️ Увеличьте пороговые значения или отключите их для определенных доверенных IP-адресов.
Если вы используете Cloudflare, проверьте:
Правила ограничения скорости в разделе Безопасность > WAF
Режим борьбы с ботами
Правила брандмауэра, блокирующие на основе User-Agent или IP
Снизить чувствительность
Внесите в белый список IP-адреса серверов или определенные пользовательские агенты
Создайте пользовательские правила для безопасных краулеров и партнеров
Проверьте, применяет ли ваше приложение ограничения с помощью таких библиотек, как:
Node.js: express-rate-limit
Laravel: ThrottleRequests
Django: drf-extensions
или middleware
Обновите конфигурацию, например:
➡️ Настройте лимиты, добавьте белые списки пользователей/IP или увеличьте квоту на основе маркеров доступа.
Если ваше приложение является клиентом и получает 429s:
Автоматическое повторение запросов с увеличивающейся задержкой:
При опросе дросселируйте собственные запросы:
Статус 429, передаваемый поисковикам, может повредить вашему рейтингу.
Вместо этого отправляйте 503 (Service Unavailable) с Retry-After
Используйте robots.txt, чтобы ограничить скорость переползания:
В Cloudflare: Перейдите в раздел Боты > Управление ползанием
Вместо жестких ограничений 429:
Используйте CAPTCHA для подозрительной активности
Внедряйте прогрессивные задержки вместо жесткой блокировки
Используйте ограничение скорости на основе пользователя, а не IP-адреса для вошедших в систему пользователей
Предоставляйте аутентифицированный доступ с более высокими ограничениями скорости (например, с помощью API-ключей или токенов)
Ошибка 429 Too Many Requests – полезный, но иногда разрушительный инструмент. Понимание того, откуда она исходит – от сервера, CDN или приложения, – является ключом к ее устранению. При правильной настройке, ведении журнала и соблюдении лимитов на стороне клиента вы сможете сбалансировать защиту и удобство использования.