Персональный | |
Директивы модуля ngx_http_limit_req_module
06.10.2009 Модуль ngx_http_limit_req_module (0.7.21) позволяет ограничить число запросов для заданной сессии или, как частный случай, с одного адреса. Ограничение делается с помощью метода leaky bucket. СодержаниеПример конфигурацииДирективы Пример конфигурацииДирективыsyntax: limit_req_zone $переменная zone=название:размер rate=скорость default: нет context: http Директива описывает зону, в которой хранятся состояния сессий. Значения сессий определяется заданной переменной. Пример использования: limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; В данном случае состояния сессий хранятся в зоне "one" размером 10 мегабайт и средняя скорость запросов для этой зоны не может более 1 запроса в секунду. В качестве сессии используется адрес клиента. Обратите внимание, что вместо переменной $remote_addr используется переменная $binary_remote_addr, позволяющая уменьшить размер состояния до 64 байт. В зоне размером 1 мегабайт может разместиться около 16000 состояний размером 64 байта. Скорость задаётся в запросах в секунду. Если же нужна скорость меньше одного запроса в секунду, то она задаётся в запросах в минуту, например, ползапроса в секунду это 30r/m. syntax: limit_req zone=название burst=число [nodelay] default: нет context: http, server, location Директива задаёт зону (zone) и максимально возможные всплески запросов (burst). Если скорость запросов превышает описанную в зоне, то их обработка запроса задерживается так, чтобы запросы обрабывались с заданной скоростью. Избыточные запросы задерживаются до тех пор, пока их число не превысит заданное число всплесков. В этом случае запрос завершается кодом "Service unavailable" (503). По умолчанию число всплесков равно нулю. Например, директивы
позволяют в среднем не более 1 запроса в секунду
со всплесками не более 5 запросов.
Если же избыточные запросы в пределах лимита всплесков задерживать не надо, то нужно использовать параметр nodelay: syntax: limit_req_log_level [info|notice|warn|error] default: limit_req_log_level error context: http, server, location Директива (0.8.18) задаёт уровень логирования случаев ограничения числа запросов и задержек при обработке запроса. Задержки логируются на один уровень ниже, чем ограничения, например, если задан "limit_req_log_level notice", то задержки будут логироваться на уровне info. (C) Игорь Сысоев |