2 директивы: limit_req_zone определяет пул (ключ + память + rate), limit_req активирует в location. 10 MB зоны = ~160k уникальных IP в RAM. Добавьте burst для короткого всплеска (burst=20 nodelay — принимает 20 без delay, затем rate limit). Возвращает 429 по умолчанию; логируйте в кастомный log, натравите fail2ban для бан-листа.
Ниже: подробности, пример, смежные термины, FAQ.
Бесплатный онлайн-инструмент — сканер безопасности сайта: результат мгновенно, без регистрации.
# /etc/nginx/conf.d/rate-limits.conf
limit_req_zone zone=api:10m rate=60r/m;
limit_req_zone zone=login:10m rate=5r/m;
limit_req_status 429;
server {
location /api/ {
limit_req zone=api burst=20 nodelay;
proxy_pass http://backend;
}
location /login {
limit_req zone=login burst=3 nodelay;
proxy_pass http://backend;
}
}
# fail2ban filter (jail.d/nginx-rate.conf)
[Definition]
failregex = limiting requests, excess.*client: <HOST>Для настройки rate limiting в nginx необходимо использовать директивы limit_req_zone и limit_req. Эти команды позволяют ограничить количество запросов от одного IP-адреса в определенный временной промежуток. Например, чтобы ограничить 10 запросов в секунду, можно использовать следующий код в конфигурационном файле:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location / {
limit_req zone=one burst=5;
# другие директивы
}
}
}При настройке rate limiting в nginx важно учитывать несколько параметров, которые влияют на эффективность и точность контроля трафика.
10m), чтобы она могла вместить необходимое количество IP-адресов.rate=10r/s ограничивает 10 запросов в секунду от одного IP.burst=5, то при превышении лимита в 10 запросов в секунду, сервер позволит еще 5 запросов одновременно, прежде чем начнет отклонять их.Также возможно использование директивы nodelay, чтобы избежать задержек при превышении лимита burst. Например, limit_req zone=one burst=5 nodelay позволяет обрабатывать дополнительные запросы без задержек.
Рассмотрим более детальный пример настройки rate limiting для API. Предположим, что вы хотите ограничить доступ к API, чтобы предотвратить злоупотребления. Для этого можно использовать следующую конфигурацию:
http {
limit_req_zone $binary_remote_addr zone=api:10m rate=5r/s;
server {
location /api {
limit_req zone=api burst=10;
limit_req_status 429;
# другие директивы
}
}
}В этом примере мы ограничиваем количество запросов к API до 5 в секунду с возможностью временного превышения до 10 запросов. Если пользователь превышает лимит, он получит ответ с кодом 429 (Too Many Requests).
Кроме того, можно настроить логирование отклоненных запросов для анализа проблем с производительностью:
error_log /var/log/nginx/limit_req.log;
location /api {
limit_req zone=api burst=10;
error_page 429 = @handle_limit;
}
location @handle_limit {
add_header Content-Type text/plain;
return 429 'Too Many Requests';
}Это позволит вам отслеживать, сколько запросов было отклонено и в какие моменты времени. Правильная настройка rate limiting в nginx поможет защитить ваш сервер от атак и обеспечить стабильную работу веб-приложения.
Инструмент проверяет HTTP-заголовки безопасности, конфигурацию SSL/TLS, утечки серверной информации и защиту от распространённых атак (XSS, clickjacking, MIMEsniffing). Оценка от A до F показывает общий уровень защиты.
Проверка Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy и других.
Версия TLS, срок сертификата, цепочка доверия, поддержка HSTS.
Поиск раскрытых серверных версий, debug-режимов, открытых конфигов и директорий.
Детальный отчёт с объяснением каждой проблемы и конкретными шагами для исправления.
аудит HTTP-заголовков
проверка конфигурации
CSP и HSTS настройка
соответствие стандартам
Strict-Transport-Security.Server: Apache/2.4.52 помогает атакующим подобрать эксплойт. Скройте версию.DENY или SAMEORIGIN.nosniff браузер может интерпретировать файлы неправильно (MIME sniffing).Content-Security-Policy-Report-Only, мониторьте нарушения, затем включите.Server, X-Powered-By, X-AspNet-Version из ответов.История security-проверок и мониторинг HTTP-заголовков безопасности.
Зарегистрироваться (FREE)Per IP быстрее (binary_remote_addr в ключе). Per user — после аутентификации через $cookie_session или $jwt_claim.
Позади CDN — real_ip_header + set_real_ip_from. Иначе всё банится на CDN IP.
CF / WAF — защита от L7 DDoS (10k+ RPS). nginx limit_req — локальный fair-use + slow-brute protection.
Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.