rate_limit_pass

Директива `rate_limit_pass` указывает upstream-сервер, который используется для проверки и применения ограничений скорости в NGINX.

Синтаксисrate_limit_pass
По умолчаниюnone
Контекстhttp, server, location
Аргументы1

Описание

Директива rate_limit_pass в NGINX является частью модуля ограничения скорости, основанного на Redis, который повышает способность сервера контролировать скорость запросов на основе заданных критериев. Эта директива указывает NGINX передавать процесс принятия решений об ограничении скорости указанному upstream Redis-серверу. Передавая аргумент этой директиве, сервер может синхронизировать данные об ограничениях скорости с Redis, что позволяет совместно контролировать скорость запросов между несколькими экземплярами сервера или контейнерами, что полезно в условиях высокого трафика.

При реализации в сочетании с директивами geo и map rate_limit_pass использует информацию об удалённом адресе или пользовательские переменные, определённые в контексте запроса, чтобы определить соответствующие ограничения скорости. Конфигурации ограничения скорости, включая пороги запросов и возможности для burst, задаются в том же блоке location, что повышает гибкость. Кроме того, если лимит превышен, возвращается заранее определённый HTTP-статус, настраиваемый с помощью директивы rate_limit_status.

Важно отметить, что директивы должны быть корректно настроены в конфигурации NGINX, чтобы избежать неожиданных проблем при взаимодействии с Redis. Директива работает в контекстах http, server или location, обеспечивая бесшовную интеграцию в различных сценариях маршрутизации.

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

upstream redis {
   server 127.0.0.1:6379;
   keepalive 1024;
}

location = /limit {
    rate_limit $limit_key requests=15 period=1m burst=20;
    rate_limit_pass redis;
}

Убедитесь, что upstream Redis server правильно настроен и доступен для NGINX.

Использование неправильных ключей или значений в логике rate limiting может привести к непреднамеренному ограничению запросов.

Учтите максимальную длину используемых ключей; превышение 65535 bytes вызовет ошибки.

← Ко всем директивам