limit_req_zone
Директива 'limit_req_zone' задаёт область общей памяти для ограничения скорости запросов по заданному ключу. — NGINX HTTP Core
Описание
Директива '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;
При определении зоны убедитесь, что ключ указан правильно, чтобы избежать непредвиденного поведения механизма ограничения.
Избегайте использования чрезмерно строгих ограничений скорости, которые могут блокировать законный трафик, особенно в высоконагруженных средах.
Убедитесь, что имя зоны уникально в конфигурации, чтобы избежать конфликтов.