Пaраметр limit_req (util_limit_requests)#
Группа параметров 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 для редиректа.
Тип параметра: строковое значение.
По умолчанию: не имеет значения по умолчанию.
forbid_action
В значении параметра задается endpoint для редиректа.
Тип параметра: строковое значение.
По умолчанию: не имеет значения по умолчанию.
status_code
В значении параметра задается код ответа при превышении допустимого объема запроса или частоты вызовов.
Тип параметра: текстовое значение.
По умолчанию:
status_code: 413dry_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'