limit_req_zone

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

limit_req_zone
http
Синтаксисlimit_req_zone key zone=name:size;
По умолчаниюnone
Контекстhttp
МодульNGINX HTTP Core
Аргументы3

Описание

Директива 'limit_req_zone' используется внутри контекста http конфигурации NGINX для определения области общей памяти, которая связана с механизмом ограничения скорости запросов. Она принимает три параметра: ключ, определяющий контекст, в котором будут учитываться запросы (например, IP-адрес клиента или переменная), имя зоны, в которой хранятся счётчики запросов, и максимальный размер этой области общей памяти. При правильной настройке NGINX группирует входящие запросы на основе заданного ключа и подсчитывает эти запросы с течением времени. Например, если ключ — IP-адрес клиента, NGINX будет отслеживать, сколько запросов поступает с каждого отдельного IP. Это позволяет администраторам предотвращать злоупотребления и ограничивать чрезмерное использование конкретных ресурсов. Функция ограничения запросов работает с использованием двух основных опций, burst и nodelay, которые можно указать совместно с директивой 'limit_req' для управления обработкой избыточных запросов. Выбранные параметры должны отражать потребности вашего развертывания, так как разные приложения могут требовать более высоких или низких лимитов и могут быть затронуты одновременными всплесками запросов от пользователей. Поэтому правильная настройка этих параметров критична, чтобы не ограничивать невольно легитимных пользователей, при этом эффективно смягчая злоупотребления.

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

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

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

Избегайте использования чрезмерно строгих ограничений скорости, которые могут блокировать законный трафик, особенно в высоконагруженных средах.

Убедитесь, что имя зоны уникально в конфигурации, чтобы избежать конфликтов.