TrafficVeil
Документация12 min

Rate Limiting: настройка лимитов запросов

Как настроить Rate Limiting для сайта и API: лимиты по IP и URL, burst-режим, ответы 429, исключения и рекомендуемые значения.

Обновлено 17 июня 2026 г.

Что такое Rate Limiting?

Rate Limiting в TrafficVeil

Rate Limiting ограничивает количество запросов, которые клиент может сделать за определённый период времени.

Зачем нужен Rate Limiting:

  • Защита от DDoS атак
  • Предотвращение брутфорс-атак
  • Защита от скрейпинга
  • Контроль нагрузки на сервер
  • Справедливое распределение ресурсов

Типы лимитов:

  • По IP адресу — лимит для каждого IP
  • По User-Agent — лимит для каждого UA
  • По URL — лимит для конкретных страниц
  • Глобальный — общий лимит для домена
  • По стране — лимит для географических регионов

Единицы измерения:

  • Запросов в секунду (req/s)
  • Запросов в минуту (req/m)
  • Запросов в час (req/h)
  • Запросов в день (req/d)

Лимиты по IP адресу

Настройка лимита по IP:

Базовые параметры:

  • Лимит: количество запросов (например, 100)
  • Период: временное окно (например, 1 минута)
  • Действие: что делать при превышении

Пример: 100 запросов в минуту на IP

Если IP делает 101-й запрос в течение минуты — применяется действие.

Действия при превышении:

  • Block — заблокировать на время
  • Challenge — показать CAPTCHA
  • Throttle — замедлить ответы
  • Log — только логировать

Время блокировки:

  • 1 минута (по умолчанию)
  • 5 минут
  • 15 минут
  • 1 час
  • 24 часа
  • Бессрочно (до ручной разблокировки)

Алгоритмы:

  • Sliding Window — скользящее окно (рекомендуется)
  • Fixed Window — фиксированное окно
  • Token Bucket — токены (для burst трафика)

Рекомендуемые значения:

  • Обычный сайт: 60-120 req/min
  • API: 30-60 req/min
  • Логин: 5-10 req/min
  • Поиск: 20-30 req/min

Лимиты по URL

Зачем нужны лимиты по URL:

Разные страницы имеют разную нагрузку и требования безопасности.

Примеры:

  • /login — строгий лимит (5 req/min)
  • /api/* — средний лимит (30 req/min)
  • /search — умеренный лимит (20 req/min)
  • /* — базовый лимит (100 req/min)

Настройка:

  1. Откройте Rate Limiting
  2. Нажмите "Добавить правило"
  3. Укажите URL паттерн
  4. Задайте лимит и действие

URL паттерны:

  • Точное совпадение: /login
  • Префикс: /api/*
  • Regex: ^/user/[0-9]+$
  • Wildcard: /products/*/reviews

Приоритет правил:

Правила применяются в порядке:

  1. Точное совпадение
  2. Regex
  3. Wildcard
  4. Глобальное правило

Специальные страницы:

Рекомендуется настроить отдельные лимиты для:

  • Страницы авторизации
  • Форма регистрации
  • Восстановление пароля
  • API endpoints
  • Формы обратной связи
  • Поиск

Продвинутые настройки

Комбинированные правила:

Можно комбинировать условия:

  • IP + URL: 10 req/min на /login для каждого IP
  • IP + UA: разные лимиты для мобильных и десктоп
  • IP + Country: разные лимиты для стран

Исключения (Whitelist):

Освободите от лимитов:

  • Собственные IP адреса
  • IP партнёров и клиентов
  • Платёжные системы
  • Мониторинг (UptimeRobot, Pingdom)
  • Поисковые боты

Динамические лимиты (Pro+):

Автоматическая адаптация лимитов:

  • При высокой нагрузке — ужесточение
  • При низкой нагрузке — ослабление
  • При атаке — автоматическая блокировка

Burst режим:

Разрешить кратковременное превышение:

  • Burst: 50 запросов
  • После burst — стандартный лимит
  • Полезно для AJAX-приложений

Географические лимиты:

Разные лимиты для разных стран:

  • Ваша страна: 200 req/min
  • Основные рынки: 100 req/min
  • Остальные: 50 req/min
  • Высокорисковые страны: 20 req/min

Ответы при блокировке

HTTP статус коды:

  • 429 Too Many Requests — стандартный код (по умолчанию)
  • 503 Service Unavailable — для скрытия защиты
  • 403 Forbidden — запрещён доступ

Заголовки ответа:

  • Retry-After: секунды до разблокировки
  • X-RateLimit-Limit: лимит
  • X-RateLimit-Remaining: осталось запросов
  • X-RateLimit-Reset: время сброса

Кастомная страница блокировки:

Загрузите HTML страницу с вашим дизайном:

  1. Настройки домена → Rate Limiting
  2. Загрузить кастомную страницу
  3. Поддерживаются переменные: {{retry_after}}, {{ip}}

JSON ответ для API:

Для API endpoints возвращается JSON:

\\\`json

{

"error": "rate_limit_exceeded",

"retry_after": 60,

"limit": 100,

"remaining": 0

}

\\\`

CAPTCHA Challenge:

При действии "Challenge":

  • Показывается CAPTCHA
  • После прохождения — доступ восстанавливается
  • Повторный CAPTCHA через N минут

Мониторинг и алерты

Статистика Rate Limiting:

  • Общее количество ограничений
  • Топ IP по ограничениям
  • Топ URL по ограничениям
  • График ограничений во времени

Уведомления:

Настройте алерты при:

  • Более 100 ограничений в минуту
  • Один IP заблокирован более 10 раз
  • Подозрение на DDoS атаку

Каналы уведомлений:

  • Email
  • Telegram
  • Webhook

Логи Rate Limiting:

Каждое ограничение логируется:

  • Время
  • IP адрес
  • URL
  • Правило, которое сработало
  • Применённое действие

Анализ паттернов:

TrafficVeil анализирует паттерны и предлагает:

  • Оптимизацию лимитов
  • Добавление в whitelist легитимных IP
  • Ужесточение лимитов для атакующих

Отчёты:

Еженедельный отчёт включает:

  • Общая статистика Rate Limiting
  • Топ-10 заблокированных IP
  • Рекомендации по настройке