П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: 10m
    
  • burst

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

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

    Тип параметра: целочисленное значение.

    По умолчанию:

    burst: 0
    
  • cpu_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: forbid
    
  • exclude_ip

    В значении параметра задаются имена исключаемых ip.

    Используется в случае

    • target == src_ip.

    exclude_ip:
      - 2.x.x.x/2
      - 192.x.x.x
    

    Тип параметра: последовательность строковых значений.

    По умолчанию: не имеет значения по умолчанию.

  • nodelay

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

    Тип параметра:

    • true;

    • false.

    По умолчанию:

    nodelay: false
    
  • forbid_action

    В значении параметра задается endpoint для редиректа.

    Тип параметра: строковое значение.

    По умолчанию: не имеет значения по умолчанию.

  • status_code

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

    Тип параметра: текстовое значение.

    По умолчанию:

    status_code: 403
    
  • dry_run

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

    Тип параметра:

    • true;

    • false.

    По умолчанию:

    dry_run: true
    
  • condition

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

    Тип параметра: группа параметров и их значения.

    По умолчанию: не имеет значения по умолчанию.

    Обязательные параметры:

    • 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'