Параметр limit_requests#

Группа параметров limit_requests предназначена для ограничения скорости обработки запросов.

Название

Обязательность

Описание

Возможные значения

Значение по умолчанию

enabled

Обязательный

Вкл./Откл. модуля limit_requests

true, false

—

status_code

Опциональный

Код ответа при превышении допустимого объема запроса или частоты вызовов

Текстовое значение

413

dry_run

Опциональный

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

on, off

off

limit_req

Обязательный

Группа параметров для ограничения скорости обработки запросов

Последовательность параметров и их значения

—

limit_req.rate

Обязательный (если mem_limit is None и cpu_limit is None)

Предел количества запросов в секунду. Разрешающая способность — миллисекунды, т.е. 10RPS означает не более 1 запроса в 100мсек

Целочисленное значение

—

limit_req.rate_interval

Опциональный

Интервал времени для измерения скорости запроса. Если необходимо указать 0.5r/s, то допустимо указать 30r/m

Текстовое значение с суффиксом: s — секунды; m — минуты

Значения задаются в s

limit_req.size

Опциональный

Размер разделяемой памяти для хранения статистики количества запросов в секунду для каждого ip адреса

Текстовое значение с суффиксом: число без суффикса — байты; k/K — килобайты; m/M — мегабайты

10m

limit_req.burst

Опциональный

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

Целочисленное значение

0

limit_req.cpu_limit

Опциональный (если rate is None, mem_limit is None и /system/optional/get_load/enabled == True)

Максимальная загрузка CPU в процентах. После превышения указанного значения, все входящие соединения будут отклонены

Целочисленное значение

—

limit_req.mem_limit

Опциональный (если rate is None, cpu_limit is None и /system/optional/get_load/enabled == True)

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

Целочисленное значение

—

limit_req.target

Обязательный

Ключ, по которому происходит ограничение

src_ip — ограничение происходит по количеству запросов для каждого ip адреса клиента отдельно; service; request_method; любые переменные, которые можно указать с \(, например \)server_port

—

limit_req.policy_type

Опциональный (если target == src_ip)

Тип политики

allow — действие будет выполняться для ip в exclude_ip; forbid — действие будет выполнено для всех ip, кроме ip в exclude_ip

forbid

limit_req.exclude_ip

Опциональный (если target == src_ip)

Имена исключаемых ip

Последовательность строковых значений

—

limit_req.nodelay

Опциональный

Требуется ли пропускать избыточные запросы в пределах всплеска без задержки

true, false

false

limit_req.forbid_action

Опциональный

Endpoint для редиректа

Строковое значение

—

limit_req.condition

Опциональный

Результат выражения, в зависимости от которого выполняется или не выполняется ограничение

Группа параметров и их значения

—

limit_req.condition.condition_var

Обязательный (в рамках condition)

Обозначение результата выражения

Строковое значение. Необходим знак „$“ перед именем

—

limit_req.condition.condition_value

Обязательный (в рамках condition)

Значение результата выражения

Строковое значение

—

limit_req.condition.type

Обязательный (в рамках condition)

Условие применимости результата выражения, в зависимости от выражения

ifall, ifany, if

—

limit_req.condition.expression

Опциональный (в рамках condition)

Выражение, включающее в себя следующие параметры: variable, operation, value

Последовательность параметров и их значения

—

limit_req.condition.expression.variable

Обязательный (в рамках expression)

Обозначение имени переменной

Строковое значение. Необходим знак „$“ перед именем

—

limit_req.condition.expression.operation

Опциональный (в рамках expression)

Операция выражения

>=, =, >, <, <=, !=, ~, ~*, !~, !~*, -f, !-f, -d, !-d, -e, !-e, -x, !-x

—

limit_req.condition.expression.value

Опциональный (в рамках expression)

Значение переменной

Строковое значение

—