Пaраметр limit_req#
Группа параметров limit_req предназначена для ограничения скорости обработки запросов. В ней определяется, требуется ли пропускать избыточные запросы в пределах всплеска без задержки.
Обязательные параметры:
enabledВкл./Откл. модуля
limit_req.Тип параметра:
true;
false.
По умолчанию: не имеет значения по умолчанию.
rateВ значении параметра задается предел количества запросов в секунду.
rate: 10Разрешающая способность — миллисекунды, т.е. 10RPS означает не более 1 запроса в 100мсек.
Используется в случае:
mem_limit is None;
cpu_limit is None.
Тип параметра: целочисленное значение.
По умолчанию: не имеет значения по умолчанию.
targetВ значении параметра определяется ключ, по которому происходит ограничение.
target: src_ipТип параметра:
src_ip - ограничение происходит по количеству запросов для каждого ip адреса клиента отдельно;
service;
request_method;
любые переменные, которые можно указать с $, например $server_port.
По умолчанию: не имеет значения по умолчанию.
Опциональные параметры:
rate_intervalВ значении параметра указывается интервал времени для измерения скорости запроса.
Если Вам необходимо 0.5r/s, то Вы можете указать 30r/m.
Тип параметра:
s — секунды;
m — минуты.
По умолчанию: по умолчанию значения задаются в „s“.
sizeВ значении параметра задается размер разделяемой памяти для хранения статистики количества запросов в секунду для каждого ip адреса.
Тип параметра: текстовое значение с суффиксом:
число без суффикса — байты;
k / K — килобайты;
m / M — мегабайты.
По умолчанию:
size: 10mburstВ значении параметра задается максимальное количество запросов, которые может выполнить клиент сверх значения, заданного параметром
rate.Если скорость поступления запросов превышает
rate, то их обработка задерживается так, чтобы запросы обрабатывались с заданной скоростью. Избыточные запросы задерживаются до тех пор, пока их число не превысит максимальный размер всплеска. При превышении уровня всплеска запрос клиента завершается с ошибкой, которая указана в настройках.Тип параметра: целочисленное значение.
По умолчанию:
burst: 0cpu_limitВ значении параметра задается максимальная загрузка CPU в процентах. После превышения указанного значения, все входящие соединения будут отклонены.
Используется в случае:
rate is None;
mem_limit is None;
/system/optional/get_load/enabled == True.
Тип параметра: целочисленное значение.
По умолчанию: не имеет значения по умолчанию.
mem_limitВ значении параметра задается максимальная загрузка памяти в процентах. После превышения указанного значения, все входящие соединения будут отклонены.
Используется в случае:
rate is None;
mem_limit is None;
/system/optional/get_load/enabled == True.
Тип параметра: целочисленное значение.
По умолчанию: не имеет значения по умолчанию.
policy_typeВ значении параметра определяется тип политики.
Используется в случае:
target == src_ip.
Тип параметра:
allow — действие будет выполняться для ip в exclude_ip;
forbid — действие будет выполнено для всех ip, кроме ip в exclude_ip.
По умолчанию:
policy_type: forbidexclude_ipВ значении параметра задаются имена исключаемых ip.
Используется в случае
target == src_ip.
exclude_ip: - 2.x.x.x/2 - 192.x.x.xТип параметра: последовательность строковых значений.
По умолчанию: не имеет значения по умолчанию.
nodelayВ значении параметра определяется, требуется ли пропускать избыточные запросы в пределах всплеска без задержки.
Тип параметра:
true;
false.
По умолчанию:
nodelay: falseforbid_actionВ значении параметра задается endpoint для редиректа.
Тип параметра: строковое значение.
По умолчанию: не имеет значения по умолчанию.
status_codeВ значении параметра задается код ответа при превышении допустимого объема запроса или частоты вызовов.
Тип параметра: текстовое значение.
По умолчанию:
status_code: 403dry_runВключает режим пробного запуска. В данном режиме скорость обработки запросов не ограничивается, однако в зоне разделяемой памяти текущее число избыточных запросов учитывается как обычно.
Тип параметра:
true;
false.
По умолчанию:
dry_run: trueconditionВ значении параметра задается результат выражения, в зависимости от которого выполняется или не выполняется ограничение.
Тип параметра: группа параметров и их значения.
По умолчанию: не имеет значения по умолчанию.
Обязательные параметры:
condition_varВ значении параметра указывается обозначение результата выражения.
Тип параметра: строковое значение. Необходим знак „$“ перед именем.
По умолчанию: не имеет значения по умолчанию.
condition_valueВ значении параметра указывается значение результата выражения.
Тип параметра: строковое значение.
По умолчанию: не имеет значения по умолчанию.
typeВ значении параметра задается условие применимости результата выражения, в зависимости от выражения.
Тип параметра:
ifall;
ifany;
if.
По умолчанию: не имеет значения по умолчанию.
Опциональные параметры:
expressionВ значении параметра задается выражение, включающее в себя следующие параметры: variable, operation, value.
Тип параметра: последовательность параметров и их значения.
По умолчанию: не имеет значения по умолчанию.
Обязательные параметры:
variableВ значении параметра указывается обозначение имени переменной.
Тип параметра: строковое значение. Необходим знак „$“ перед именем.
По умолчанию: не имеет значения по умолчанию.
Опциональные параметры:
operationВ значении параметра задается операция выражения.
Тип параметра:
„>=“;
„=“;
„>“;
„<“;
„<=“;
„!=“;
„~“;
„~*“;
„!~“;
„!~*“;
„-f“;
„!-f“;
„-d“;
„!-d“;
„-e“;
„!-e“;
„-x“;
„!-x“.
По умолчанию: не имеет значения по умолчанию.
valueВ значении параметра указывается значение переменной.
Тип параметра: строковое значение.
По умолчанию: не имеет значения по умолчанию.
Пример:
condition: type: ifall condition_var: $var condition_value: '1' expression: - operation: '>=' variable: $insensitive_percent value: '0' - operation: '<' variable: $insensitive_percent value: '30'
Пример:
limit_req:
enabled: true
target: service
rate: 60
burst: 10
size: 100m
nodelay: True
status_code: 403
forbid_action: /web
condition:
condition_var: $var
condition_value: '1'
type: ifall
expression:
- operation: '>='
variable: $insensitive_percent
value: '0'
- operation: '<'
variable: $insensitive_percent
value: '30'