Тема
Режим
Язык
Тема
Режим
Язык
Регистрация
FREE Бесплатный аудит сайта за 15 мин Заказать →

Базовые правила rate-limit: примеры для nginx

Набор стартовых лимитов для логина, поиска и API. Копируй и адаптируй под себя.

Executive Summary для руководителя
💰

Финансовый риск

От 50 000 до 300 000 рублей в час из-за недоступности сайта для клиентов при атаке на прикладном уровне (L7), перерасхода ресурсов CPU/RAM хостинга.

📈

Влияние на KPI

Снижение конверсии заказов. Медленный отклик сайта (TTFB) ухудшает поведенческие факторы и пессимизирует поисковый трафик из Google и Яндекса.

⚠️

Уровень критичности

Высокий

👤

Кому поручить

DevOps-инженер / Бэкенд-разработчик

Rate-limit — первая линия защиты от ботов, брутфорса и простых DDoS-атак. Настраивается за 10 минут, работает годами.

flowchart TD
    Req[Запрос] --> Check{Лимит?}
    Check -->|"OK"| Allow[Пропустить]
    Check -->|"Превышен"| Burst{Burst?}
    Burst -->|"OK"| Queue[В очередь]
    Burst -->|"Нет"| Reject[429 Error]
    Queue --> Allow
Логика rate limiting в nginx
⚠️
Важно
Эти правила — стартовая точка. Подстраивайте числа под свой трафик. Для более сложной защиты настройте WAF-правила.
01

Базовая настройка

Добавьте в nginx.conf
nginx.conf — http блок
http {\n    # Зона для общих запросов: 10 req/sec на IP\n    limit_req_zone $binary_remote_addr zone=general:10m rate=10r/s;\n    \n    # Зона для логина: 1 req/sec (жёстко)\n    limit_req_zone $binary_remote_addr zone=login:10m rate=1r/s;\n    \n    # Зона для API: 30 req/sec\n    limit_req_zone $binary_remote_addr zone=api:10m rate=30r/s;\n    \n    # Зона для поиска: 5 req/sec\n    limit_req_zone $binary_remote_addr zone=search:10m rate=5r/s;\n}
02

Применение к location

Защищаем критичные endpoint
site.conf — server блок
# Защита логина (WordPress)\nlocation = /wp-login.php {\n    limit_req zone=login burst=3 nodelay;\n    # ... остальные директивы\n}\n\n# Защита админки\nlocation /wp-admin/ {\n    limit_req zone=login burst=5 nodelay;\n    # ... остальные директивы\n}\n\n# Защита API\nlocation /api/ {\n    limit_req zone=api burst=50 nodelay;\n    proxy_pass http://backend;\n}\n\n# Защита поиска\nlocation /search {\n    limit_req zone=search burst=10 nodelay;\n    # ...\n}

10 запросов в секунду с одного IP. Если больше — nginx вернёт 503.

«Запас» запросов. burst=20 разрешает всплеск до 20 запросов сверх лимита. Полезно для реальных пользователей.

Без nodelay nginx задерживает запросы в очереди. С nodelay — сразу 503. Для защиты лучше nodelay.

Проверка
После изменений: nginx -t && systemctl reload nginx. Тестируйте: ab -n 100 -c 10 https://site.com/wp-login.php
💡
Совет
Добавьте limit_req_log_level warn; чтобы видеть в логах, когда срабатывают лимиты.

Тест: Базовые правила rate-limit: примеры для nginx

Вопрос 1 из 3
Что такое rate-limit?
Rate-limit ограничивает количество запросов за время.
От чего защищает rate-limit?
Rate-limit — первая линия защиты от ботов и брутфорса.
Сколько времени занимает настройка rate-limit в nginx?
Настраивается за 10 минут, работает годами.
0 / 3
Чек-лист проверки для владельца бизнеса

Скопируйте эти вопросы и отправьте вашему техническому директору (CTO) или руководителю разработки:

  • Настроена ли WAF-фильтрация для отсечения ботов с помощью JS-челленджей без показа капчи реальным пользователям?
  • Защищен ли веб-сервер от атак типа Slowloris путем оптимизации HTTP Keep-Alive таймаутов?
  • Проверено ли наше приложение на защиту от атак типа HTTP Request Smuggling и отравления кэша?

Словарь по теме

Rate Limiting

Ограничение количества запросов с одного IP-адреса за определённый период времени. Первая линия защиты от ботов, брутфорса и простых DDoS-атак.

Endpoint

URL-адрес, по которому доступен определённый ресурс или функция API. Например: /api/users, /login.

nginx

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

DDoS

Распределённая атака на отказ в обслуживании. Множество устройств одновременно отправляют запросы на сервер, перегружая его и делая недоступным для легитимных пользователей.

RPS

Requests Per Second — количество HTTP-запросов в секунду. Ключевая метрика нагрузки на сервер.

XSS

Cross-Site Scripting — атака через внедрение вредоносного JavaScript-кода на страницу сайта. Позволяет красть cookies, перехватывать данные пользователей.

WAF

Web Application Firewall — межсетевой экран для веб-приложений. Фильтрует HTTP-трафик, блокирует SQL-инъекции, XSS, и другие атаки на прикладном уровне.

Получите план защиты под ваш сайт

Оставьте контакт и адрес сайта — пришлём план защиты и список приоритетных шагов.

  • Приоритетные шаги на 7 дней
  • Быстрая обратная связь
  • План в удобном формате
Без спама. Можно указать Telegram (@username) или email.
Написать в Telegram