Конфигурация зон лимитов Nginx (limit_req_zone и limit_conn_zone против L7 DDoS)
Конфиг Nginx limit_req_zone и limit_conn_zone: ограничение числа запросов с одного IP, защита от HTTP-флуда, парсинга и перегрузки PHP-бэкенда.
Интерактивный генератор под ваши параметры
Параметры подставляются в код в реальном времени
/etc/nginx/conf.d/rate_limits.conf
# /etc/nginx/conf.d/rate_limits.conf
# Зоны лимитов запросов (10MB хранит ~160 000 IP адресов)
limit_req_zone $binary_remote_addr zone=general_limit:10m rate=15r/s;
limit_req_zone $binary_remote_addr zone=search_limit:10m rate=3r/s;
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
# В блоке server {} вашего сайта:
# limit_conn conn_limit 20;
# limit_req zone=general_limit burst=30 nodelay;
# limit_req_status 429;
Разбор ключевых директив конфигурации
Техническое обоснование директив и их прямое влияние на процессор (CPU), оперативную память (RAM) и дисковый ввод-вывод (NVMe I/O).
| Директива / Блок | Рекомендуемое значение | Зачем нужно и системное влияние (CPU / RAM / I-O) |
|---|---|---|
limit_req rate=15r/s |
15r/s | Максимальная средняя частота запросов от одного пользователя. |
burst=30 nodelay |
burst=30 | Разрешает всплеск до 30 запросов (загрузка картинок, CSS, JS) без задержки. |
limit_req_status 429 |
429 | Возвращает корректный HTTP-код '429 Too Many Requests' вместо 503. |
Рекомендуемые системные требования VDS под этот стек
Расчет минимальной и оптимальной конфигурации виртуального сервера для стабильной работы без сбоев.
Оптимальный сайзинг: 2 vCPU, 2-4 GB RAM, Nginx Web VDS
Timeweb Cloud
2 CPU / 4 GB NVMe
Рекомендуемые ресурсы
2 vCPU /
2-4 GB RAM /
30 GB NVMe
Selectel
2 vCPU / 4 GB RAM
Рекомендуемые ресурсы
2 vCPU /
2-4 GB RAM /
30 GB NVMe
Beget
Turbo 4 GB
Рекомендуемые ресурсы
2 vCPU /
2-4 GB RAM /
30 GB NVMe
Онлайн-утилиты SysKit для проверки этого сервера
Протестируйте корректность применения конфигурации прямо сейчас в один клик.
Частые ошибки при настройке и их решение (FAQ)
Типовые проблемы вебмастеров и сисадминов при внедрении данной конфигурации.
Не заблокирует ли это поисковых ботов?
Используйте модуль `geo` или директиву `limit_req_whitelist` для исключения ботов Яндекса и Google.
Как не заблокировать собственный IP адрес?
Добавьте ваш IP в директиву `ignoreip = 127.0.0.1/8 ::1 ВАШ_IP` в файле `/etc/fail2ban/jail.local`.
Как разблокировать ошибочно забаненный IP?
Выполните команду `fail2ban-client set <jail_name> unbanip <IP_ADDRESS>`.
Рекомендуемые смежные конфигурации
Дополнительные рецепты и калькуляторы для полной оптимизации данного серверного стека.