limit_req

Директива 'limit_req' контролирует скорость обработки запросов NGINX для защиты от чрезмерной нагрузки. — NGINX HTTP Core

limit_req
httpserverlocation
Синтаксисlimit_req zone=name [burst=number] [nodelay];
По умолчаниюnone
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы1-3

Описание

Директива 'limit_req' используется в NGINX для ограничения числа запросов, которые клиент может отправить на сервер за указанный период времени. Эта директива является частью HTTP Core Module и может применяться в разных контекстах, включая http, server, and location blocks. Основная цель этой директивы — контролировать трафик и предотвращать злоупотребления со стороны клиентов, отправляющих слишком много запросов, что может повлиять на производительность и стабильность сервера. Директива 'limit_req' принимает от одного до трёх параметров: 1. **zone** (обязательно): общая область памяти, в которой хранится конфигурация ограничения скорости запросов. 2. **burst** (опционально): позволяет обработать определённое количество избыточных запросов немедленно (без задержки), когда лимит кратковременно превышен. Значение burst допускает всплески трафика. 3. **nodelay** (опционально): если указано, избыточные запросы будут обработаны немедленно, если они не превышают значение burst; в противном случае они задерживаются в соответствии с ограничением скорости. Пользователям необходимо определить общую область памяти с помощью директивы 'limit_req_zone' перед использованием 'limit_req'. Ограничение скорости основано на параметрах, заданных в этих зонах, которые определяют, сколько запросов может исходить от определённого ключа (например, IP address) за указанный период.

Пример конфига

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
server {
    location /api {
        limit_req zone=mylimit burst=5 nodelay;
    }
}

Перед использованием 'limit_req' убедитесь, что зона разделяемой памяти правильно определена с помощью 'limit_req_zone'.

Будьте осторожны с значением burst, чтобы не допустить слишком большого количества запросов, которые могут привести к перегрузке сервера.

Использование 'nodelay' может вызвать резкие всплески трафика, если он настроен неправильно.