Тип сервиса HttpProxy#

В контексте service объявляется тип сервиса, соответствующий service_http_proxy:

service:
  service_http_proxy:

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

  • id

    Идентификатор сервиса в контексте всего профиля. Используется, например, в названии директории и других системных файлах, хранящих информацию о сервисе.

    Значение параметра id должно быть уникальным.

    Идентификатор может быть строкой, числом, или их комбинацией. В качестве разделителя слов необходимо использовать знак нижнее подчеркивание " _ ".

    Количество сервисов не ограничено конфигуратором явно.

    - id: 1
      ...
    - id: my_service_one
      ...
    

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

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

  • name

    Технологическое название сервиса, используемое для идентификации сервиса в логах транзацкий.

    Значение параметра name должно быть уникальным.

    Обязательно в случае:

    optional:
      event_hook:
        ...
    

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

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

  • url

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

    url: /my_service_url
    

    Значение параметра url должно быть уникальным.

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

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

  • В случае, если проксирование осуществляется с использованием сервиса типа service_main_proxy:

    upstream_group_id: <value>
    use_main_upstream_groups: true
    

    В случае, если проксирование осуществляется напрямую через сервис, соответствующего типа:

    upstream_group_id: <value>
    upstream_groups:
    ...
    

    Описание группы серверов и параметров соединения с backend'ом.

    Последовательность, включающая в себя параметры, описанные в разделе "Параметр upstream" в разделе "Основные параметры сервисов".

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

    1. В случае, если проксирование осуществляется с использованием сервиса типа service_main_proxy:

      upstream_group_id: <value>
      use_main_upstream_groups: true
      
    2. В случае, если проксирование осуществляется напрямую через сервис, соответствующего типа:

      upstream_group_id: <value_name_group>
      upstream_groups:
        - id: <value_name_group>
          servers:
            - server: <value_ip_address>
      

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

  • allowed_queries

    Группа параметров, описанных в разделе "Параметр allowed_queries", используемых для указания разрешенных методов запроса и параметров запроса.

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

    По умолчанию: значения группы задаются пользователем.

service:
  service_http_proxy:

Пример минимальной настройки с проксированием на апстрим группу, определенную в main сервисе:

service_main_proxy:
  - id: main
    listen:
      - port: 8080
        ...
    hostname:
      - localhost
      - 127.0.0.1
    url: /
    ...
    upstream_groups:
      - id: <main_group_id>
        servers:
          - server: <ip>
service_http_proxy:
  - id: 1
    url: /my_service_url
    upstream_group_id: <main_group_id>
    use_main_upstream_groups: true
    allowed_queries:
      - method: post

Пример минимальной настройки с проксированием на апстрим группу, определенную в сервисе:

- id: 1
  url: /my_service_url
  upstream_group_id: <value_name_group>
  upstream_groups:
    - id: <value_name_group>
      servers:
        - server: <value_ip_address>
  allowed_queries:
    - method: post

Опциональные параметры:

  • profile_version

    В значении параметра определяется версия профиля данного сервиса.

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

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

  • description

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

    Значение параметра description не является уникальным.

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

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

  • listen

    Параметр listen является обязательным только для сервиса типа service_main_proxy. Для сервисов иных типов параметр listen опционален.

    В случае, если параметр listen не указан (имеется ввиду наличие данного параметра в сервисе типа service_main_proxy и отсутствие в сервисах иных типов), для взаимодействия между сервисами используются unix-сокеты.

    Последовательность, включающая в себя параметры, описанные в разделе "Параметр listen" в разделе "Основные параметры сервисов".

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

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

  • hostname

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

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

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

    hostname
      - localhost
    
  • optional

    Группа optional используется в сервисе для:

    • вызова различных таймаутов;

    • настройки сессии;

    • ограничения по размеру лимита тела запроса/ответа;

    • вызова различных утилит;

    • и др.

    Группа, включающая в себя параметры, описанные в разделе "Параметр HttpProxy - optional".

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

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

  • transformations

    Параметр transformations предназначен для преобразования заголовков при выполнении заданных условий.

    Последовательность, включающая в себя параметры, описанные в разделе "Фильтр Transformations".

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

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

  • filters

    Группа, включающая в себя следующие параметры:

    • фильтр modsecurity - позволяет проверить download/upload трафик на наличие угроз (например sql-injection), содержащихся в методе, хэдорах, теле и др.;

    • фильтр icap - позволяет проверить download/upload трафик на наличие вирусов. Проверка на вирусы осуществляется путем отправки вложения внешнему антивирусу.

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

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

  • validators

    Валидация тела запроса/ответа.

    Группа, включающая в себя параметры, описанные в разделе "Настройка валидации в SOWA".

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

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

  • modifiers

    Группа modifiers позволяет изменять содержимое заголовков запроса и ответа.

    Группа, включающая в себя параметры, описанные в разделе "Параметр modifiers" в разделе "Дополнительные параметры сервисов".

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

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

  • postprocessors

    Постобработчик postprocessor_error предназначен для формирования сообщения об ошибке для клиента по указанному шаблону.

    Группа, включающая в себя параметры, описанные в разделе "Постобработчик postprocessor_error".

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

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

  • chains

    Группа, включающая в себя параметры, описанные в разделе "Параметр chains_request" в разделе "Основные параметры сервисов".

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

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

service:
  service_http_proxy:

Пример настройки с проксированием через main сервис:

service_main_proxy:
  - id: main
    listen:
      - port: 8080
        ...
    hostname:
      - localhost
      - 127.0.0.1
    url: /
    ...
    upstream_groups:
      - id: <main_group_id>
        servers:
          - server: <ip>
service_http_proxy:
  - id: 1
    name: 1.1
    description: Сервис 1
    hostname:
      - localhost
    url: ^\/my_service_url$
    use_main_upstream_groups: true
    upstream_group_id: <main_group_id>
    allowed_queries:
      - method: post
        params:
          - name: "cmd"
            pattern: "START"
          - name: "name"
            pattern: "balance|registration"
    validators:
      validator_json:
        request:
          - schema: schemes/json/1/v1/BalanceGetRequestV1.json
            method: post
            params:
              - name: "cmd"
                operator: "="
                pattern: "START"
              - name: "name"
                operator: "="
                pattern: "balance"
          - schema: schemes/json/1/v1/CreateRequestV1.json
            method: post
            params:
              - name: "cmd"
                operator: "="
                pattern: "START"
              - name: "name"
                operator: "="
                pattern: "registration"
        response:
          - schema: schemes/json/1/v1/BalanceGetResponseV1.json
            method: post
            params:
              - name: "cmd"
                operator: "="
                pattern: "START"
              - name: "name"
                operator: "="
                pattern: "balance"
            response_code:
              operator: "!~"
              pattern: "(?:500|502|503|504)"
          - schema: schemes/json/1/v1/CreateResponseV1.json
            method: post
            params:
              - name: "cmd"
                operator: "="
                pattern: "START"
              - name: "name"
                operator: "="
                pattern: "registration"
            response_code:
              operator: "!~"
              pattern: "(?:500|502|503|504)"
    transformations:
      !include: ufs_transforms.yml
    optional:
      !include: evh.yml
      !include: proxy_ssl.yml
      session_timeout: 60
      client_header_timeout: 60s
      client_body_timeout: 60s
      send_timeout_to_client: 60s
      proxy_connect_timeout: 60s
      proxy_read_timeout: 60s
      proxy_send_timeout: 60s
      limit_req:
        enabled: true
        target: request_method
        rate: 180
        burst: 300
        status_code: 429
      upload_size_limit:
        size: 50k
        drop: "off"
      download_size_limit:
        size: 50k
        drop: "off"

Пример настройки с проксированием через сервис соответствующего типа:

- id: 1
  name: 1.1
  description: Сервис 1
  listen:
    - port: 8080
      ssl:
        certificate: server_dev.cer
        certificate_key: server_dev.key
        client_certificate: ca_dev.cer
        verify_client: 'on'
        verify_depth: 2
        protocols:
          - TLSv1.2
        ciphers:
          - value:
            - "HIGH"
          - prefix: "!"
            value:
              - "aNULL"
          - value:
              - "NULL-SHA256"
        session_cache:
          type: "shared"
          name: "TLS"
          size: 20m
  hostname:
    - localhost
  url: ^\/my_service_url$
  upstream_group_id: <value_name_group>
  upstream_groups:
    - id: <value_name_group>
      servers:
        - server: <value_ip_address>
  allowed_queries:
    - method: post
      params:
        - name: "cmd"
          pattern: "START"
        - name: "name"
          pattern: "balance|registration"
  validators:
    validator_json:
      request:
        - schema: schemes/json/1/v1/BalanceGetRequestV1.json
          method: post
          params:
            - name: "cmd"
              operator: "="
              pattern: "START"
            - name: "name"
              operator: "="
              pattern: "balance"
        - schema: schemes/json/1/v1/CreateRequestV1.json
          method: post
          params:
            - name: "cmd"
              operator: "="
              pattern: "START"
            - name: "name"
              operator: "="
              pattern: "registration"
      response:
        - schema: schemes/json/1/v1/BalanceGetResponseV1.json
          method: post
          params:
            - name: "cmd"
              operator: "="
              pattern: "START"
            - name: "name"
              operator: "="
              pattern: "balance"
          response_code:
            operator: "!~"
            pattern: "(?:500|502|503|504)"
        - schema: schemes/json/1/v1/CreateResponseV1.json
          method: post
          params:
            - name: "cmd"
              operator: "="
              pattern: "START"
            - name: "name"
              operator: "="
              pattern: "registration"
          response_code:
            operator: "!~"
            pattern: "(?:500|502|503|504)"
  transformations:
    !include: ufs_transforms.yml
  optional:
    !include: evh.yml
    !include: proxy_ssl.yml
    session_timeout: 60
    client_header_timeout: 60s
    client_body_timeout: 60s
    send_timeout_to_client: 60s
    proxy_connect_timeout: 60s
    proxy_read_timeout: 60s
    proxy_send_timeout: 60s
    limit_req:
      enabled: true
      target: request_method
      rate: 180
      burst: 300
      status_code: 429
    upload_size_limit:
      size: 50k
      drop: "off"
    download_size_limit:
      size: 50k
      drop: "off"

HttpPrоxy - allowed_queries#

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

  • method

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

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

    • get;

    • head;

    • post;

    • put;

    • options;

    • trace;

    • patch;

    • delete.

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

Опциональные параметры:

  • decodeUrl

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

    Тип параметра: логическое значение:

    • true;

    • false.

    По умолчанию: По умолчанию mds использует параметры запроса с url-декодированием.

  • strict_params_check

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

    Тип параметра: логическое значение:

    • true;

    • false.

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

    strict_params_check: false
    
  • params

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

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

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

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

    • name

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

      Значение параметра name должно быть уникальным.

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

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

    • pattern

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

      Имеется возможность использования регулярного выражение.

      Для использования символов:

      • \ ^ $ . | ? * + ( ) [ ] { } - в явном виде, необходимо их экранирование.

      Символ \ экранируется только тогда, когда находится в кавычках.

      В примере ниже показывается, что экранируется связка \ с иным элементом (например #):

      - name: "name_1"
        pattern: "[^\\#\\$\\%\\&\\(\\)\\*\\+\\,\\-\\.\\:\\;\\<\\=\\>\\?\\^\\_\\{\\|\\}\\~\\@]+"
      - name: "name_2"
        pattern: "[^ЁёА-я]+"
      

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

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

HttpPrоxy - optional#

В разделе приведено описание опциональных параметров для сервиса HttpProxy.

Опциональные параметры:

  • service_cache

    Группа параметров service_cache предназначена для расширенного использования параметров сервиса типа service_cache. В секции service должен быть объявлен хотя бы один сервис типа service_cache.

    version: 2.0.3
    profile: profile_name
    system:
      wrk_count: 4
      conn_count: 2048
    service:
      service_cache:
        storages:
          - name: testname
          - name: testname2
      service_http_proxy:
        - id: 1
          ...
          optional:
            service_cache:
              ...
    

    Группа, включающая в себя параметры, описанные в разделе "Параметр service_cache".

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

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

  • log_level

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

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

    • debug;

    • info;

    • notice;

    • warn;

    • error;

    • crit;

    • alert;

    • off.

    По умолчанию: Значение параметра наследуется от значения в system.

  • group_access_log

    В значении параметра указывается, группировать или нет access журналы по кодам состояния (2xx, 3xx, 4xx, 5xx, 404, 413, 429, 499, 500).

    Тип параметра: логическое значение:

    • true;

    • false.

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

    group_access_log: false
    
  • log_format

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

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

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

  • client_header_timeout

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

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

    • ms - миллисекунда;

    • s - секунда;

    • m - минута;

    • h - час;

    • d - день;

    • w - неделя;

    • M - месяц (30 дней);

    • y - год (365 дней).

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

    client_header_timeout: 60s
    
  • client_body_timeout

    В значении параметра указывается таймаут при чтении тела запроса клиента.

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

    • ms - миллисекунда;

    • s - секунда;

    • m - минута;

    • h - час;

    • d - день;

    • w - неделя;

    • M - месяц (30 дней);

    • y - год (365 дней).

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

    client_body_timeout: 60s
    
  • keepalive_timeout

    В значении параметра указывается таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера.

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

    • ms - миллисекунда;

    • s - секунда;

    • m - минута;

    • h - час;

    • d - день;

    • w - неделя;

    • M - месяц (30 дней);

    • y - год (365 дней).

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

    keepalive_timeout: 75s
    
  • keepalive_requests

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

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

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

    keepalive_requests: 10000
    
  • send_timeout_to_client

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

    Таймаут устанавливается не на всю передачу ответа, а только между двумя операциями записями.

    Если по истечении этого времени клиент ничего не примет, соединение будет закрыто.

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

    • ms - миллисекунда;

    • s - секунда;

    • m - минута;

    • h - час;

    • d - день;

    • w - неделя;

    • M - месяц (30 дней);

    • y - год (365 дней).

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

    send_timeout_to_client: 60s
    
  • session

    В значении параметра включается поддержка http сессии.

    session_module (параметры: session, session_timeout, session_cookie_name, session_redirect_timeout, session_show) предоставляет собой функцию отслеживания http запросов - записывается информация о сеансе, устанавливая cookie в браузере клиента. Некоторые модули безопасности, такие как ip_behavior, основываются на данном модуле.

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

    • "on";

    • ''off''.

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

    session: "off"
    
  • session_timeout

    В значении параметра указывается таймаут сессии.

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

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

    session_timeout: 60
    
  • session_cookie_name

    В значении параметра указывается имя куки сессии.

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

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

    session_cookie_name: SENGINX-SESSION-ID
    
  • session_redirect_timeout

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

    Значение в секундах. Значение не должно быть больше session_timeout.

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

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

    session_redirect_timeout: 5
    
  • session_show

    В значении параметра определяется возможность просматривать информацию о текущих сессиях.

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

    • true;

    • false.

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

    session_show: false
    
  • session_cache

    В значении параметра определяется размер кэша для ssl/tls сессии.

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

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

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

    • type

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

      Значение параметра type должно быть уникальным.

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

      • off - жесткое запрещение использования кэша сессий: nginx явно сообщает клиенту, что сессии не могут использоваться повторно;

      • none - мягкое запрещение использования кэша сессий: nginx сообщает клиенту, что сессии могут использоваться повторно, но на самом деле не хранит параметры сессии в кэша;

      • builtin - встроенный в OpenSSL кэш, используется в рамках только одного рабочего процесса. Размер кэша задается в сессиях. Если размер не задан, то он равен 20480 сессиям. Использование встроенного кэша может вести к фрагментации памяти;

      • shared - кэш, разделяемый между всеми рабочими процессами. Размер кэша задается в байтах, в 1 мегабайт может поместиться около 4000 сессий. У каждого разделяемого кэша должно быть произвольное название. Кэш с одинаковым названием может использоваться в нескольких виртуальных серверах.

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

    • name

      В значении параметра указывается имя размера.

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

      • type: shared.

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

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

    • size

      В значении параметра указывается величина размера.

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

      • type: builtin;

      • type: shared.

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

      • число без суффикса - байты;

      • k / K - килобайты;

      • m / M - мегабайты.

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

    session_cache:
      type: shared
      name: my_name_size
      size: 4k
    
  • next_upstream

    Настройка proxy_next_upstream определяет, в каких случаях запрос будет передан следующему серверу.

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

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

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

    • timeout

      Значение параметра ограничивает время, в течение которого возможна передача запроса следующему серверу. Значение 0 отключает это ограничение.

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

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

    • tries

      Значение параметра ограничивает число допустимых попыток для передачи запроса следующему серверу. Значение 0 отключает это ограничение.

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

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

    Опциональные параметры:

    • codes

      Список негативных кодов, ориентируясь на который модуль переключает upstream.

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

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

  • file_upload_limit

    В значении параметра указывается ключ для сброса TCP-соединения, если будет осуществлена попытка загрузки файла на сервер с установленным заголовком "multipart/form-data".

    Механизм позволяет избежать DOS-атак, осуществляемых посредством передачи файлов большого объема (включает ограничение загрузки файла по заголовку типа контента).

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

    • "on";

    • "off".

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

    file_upload_limit: "on"
    
  • upload_size_limit

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

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

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

    size: 2Mb
    

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

    • size

      В значении параметра задается максимальный размер тела запроса.

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

      • число без суффикса - байты;

      • k / K - килобайты;

      • m / M - мегабайты.

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

    Опциональные параметры:

    • drop

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

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

      • "on";

      • "off".

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

    • (2.3) enable

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

      Тип параметра: логическое значение:

      • true;

      • false.

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

      enable: true
      
    upload_size_limit:
      size: 40M
      drop: 'on'
      enable: true
    
  • download_size_limit

    В значении параметра определяется ограничение размера тела ответа.

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

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

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

    • size

      В значении параметра задается максимальный размер тела запроса.

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

      • число без суффикса - байты;

      • k / K - килобайты;

      • m / M - мегабайты.

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

    Опциональные параметры:

    • drop

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

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

      • "on";

      • "off".

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

    • (2.3) status

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

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

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

      status: 413
      
    download_size_limit:
      size: 50k
      drop: "off"
      status: 413
    
  • http_version

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

    Внимание! Ряд функций недоступен при указании HTTP2.

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

    • 1.0;

    • 1.1.

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

    http_version: 1.0
    
  • cookie_domain

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

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

    По умолчанию: по умолчанию параметр cookie_domain отключен.

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

    • from

      Текст, который нужно изменить в атрибуте domain.

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

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

    • to

      Текст, на который нужно будет изменить.

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

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

    Предположим, проксируемый сервер вернул поле заголовка Set-Cookie с атрибутом domain=localhost. Тогда оно будет заменено на значение example.org:

    cookie_domain:
      from: localhost
      to: example.org
    
  • cookie_flags

    В значении параметра задается один или несколько, но не более четырех флагов (flag) для cookie из следующего перечня флагов: nosecure, nohttponly, nosamesite, secure, httponly, samesite=strict, samesite=lax, samesite=none. В качестве cookie задаются текст, параметры и их комбинации. В случае необходимости использования регулярного выражения, ему должен предшествовать специальный символ '~' , который должен быть окружен одинарными кавычками. В качестве флага (flag) можно использовать текст, переменные и их комбинации. В конфигурации может быть указанно несколько директив cookie_flags.

    Недоступно в случае указания http_version = 2.0.

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

    • http_version is None;

    • http_version not in [2.0].

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

    По умолчанию: по умолчанию параметр cookie_flags отключен.

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

    • cookie

      В значении параметра указывается имя cookie.

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

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

    • flag

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

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

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

    Предположим, необходимо указать несколько директив cookie_flags, использовать переменную и регулярное выражение:

    optional:
        set_variable:
            - name: myvar
              value: "httponly"
        cookie_flags:
    # В качестве флага можно использовать текст, переменные и их комбинации
            - cookie: cookie1
              flag: $myvar
            - cookie: '~' cookie2
              flag: no$myvar
    
  • cookie_path

    В значении параметра задается текст, который надо заменить в атрибуте path полей Set-Cookie заголовка ответа проксируемого сервера.

    Директиву также можно задать при помощи регулярных выражений. При этом путь должен начинаться либо с символа “~”, если при сравнении следует учитывать регистр символов, либо с символов “~*”, если регистр символов учитывать не нужно. Регулярное выражение может содержать именованные и позиционные выделения, а замена - ссылаться на них:

    cookie_path:
        - from: ~^/BLABLA/([^/]+)
          to: /sowa/$1
    

    На одном уровне может быть указано несколько директив cookie_path:

    cookie_path:
        - from: /one/
          to: /
        - from: /two/
          to: /
    

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

    • http_version is None;

    • http_version not in [2.0].

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

    По умолчанию: по умолчанию параметр cookie_path отключен.

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

    • from

      Текст, который нужно изменить в атрибуте path.

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

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

    • to

      Текст, на который нужно будет изменить.

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

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

    Предположим, проксируемый сервер вернул поле заголовка Set-Cookie с атрибутом "path=/two/some/uri/". Перепишем атрибут в виде "path=/some/uri/":

    cookie_path:
      from: /two/
      to: /
    
  • proxy_connect_timeout

    В значении параметра задается таймаут для установления соединения с proxy-service.

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

    • ms - миллисекунда;

    • s - секунда;

    • m - минута;

    • h - час;

    • d - день;

    • w - неделя;

    • M - месяц (30 дней);

    • y - год (365 дней).

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

    proxy_connect_timeout: 60s
    
  • proxy_read_timeout

    В значении параметра задается таймаут при чтении ответа proxy-service.

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

    • ms - миллисекунда;

    • s - секунда;

    • m - минута;

    • h - час;

    • d - день;

    • w - неделя;

    • M - месяц (30 дней);

    • y - год (365 дней).

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

    proxy_read_timeout: 60s
    
  • proxy_send_timeout

    В значении параметра задается таймаут при передаче запроса proxy-service.

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

    • ms - миллисекунда;

    • s - секунда;

    • m - минута;

    • h - час;

    • d - день;

    • w - неделя;

    • M - месяц (30 дней);

    • y - год (365 дней).

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

    proxy_send_timeout: 60s
    
  • proxy_set_body

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

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

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

  • proxy_headers_hash_bucket_size

    В значении параметра задается размер корзины для хэш-таблиц, используемых директивами proxy_set_headers и proxy_hide_headers.

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

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

    proxy_headers_hash_bucket_size: 64
    
  • proxy_headers_hash_max_size

    В значении параметра задается максимальный размер хэш-таблиц, используемых директивами proxy_set_headers и proxy_hide_headers.

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

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

    proxy_headers_hash_max_size: 512
    
  • kafka_logger_id

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

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

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

  • security_headers

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

    Группа, включающая в себя параметры, описанные в разделе "Параметр security_headers".

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

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

  • exclude_req_stat

    exclude_resp_stat

    В значениях параметров исключаются сервисы из статистики учета реквестов/респонсов.

    Параметры подробно рассмотрены в разделе "Параметр exclude_stat".

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

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

  • limit_req

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

    Группа, включающая в себя параметры, рассмотренные в разделе "Параметр limit_req".

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

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

  • robot_mitigation

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

    Группа, включающая в себя параметры, рассмотренные в разделе "Параметр robot_mitigation".

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

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

  • ip_behavior

    Группа параметров ip_behavior предназначена для мониторинга поведения пользователей при доступе к серверу. ip_behavior в основном используется с другими группами параметров безопасности, такими как limit_req и robot_mitigation. ip_behavior поддерживает обнаружение доступа только через url.

    Группа, включающая в себя параметры, рассмотренные в разделе "Параметр ip_behavior".

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

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

  • cookie_poisoning

    Группа параметров cookie_poisoning отслеживает заголовки Set-Cookies и значения cookie в ответе со стороны сервера. Если отслеживаемые значения файлов cookie изменяются на стороне клиента, cookie_poisoning обнаруживает это и выполняет действия в соответствии с настройками пользователя. Группа параметров зависит от session_module (параметры: session, session_timeout, session_cookie_name, session_redirect_timeout, session_show), поэтому перед использованием директив cookie_poisoning необходимо сначала включить session_module.

    Группа, включающая в себя параметры, рассмотренные в разделе "Параметр cookie_poisoning".

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

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

  • spnego

    Группа параметров spnego предназначена для аутентификации kerberos.

    Группа, включающая в себя параметры, рассмотренные в разделе "Параметр spnego".

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

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

  • gzip

    Группа параметров gzip позволяет осуществлять сжатие ответа одноименным методом.

    Группа, включающая в себя параметры, рассмотренные в разделе "Параметр gzip".

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

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

  • event_hook

    Группа параметров event_hook производит журналирование событий.

    Группа, включающая в себя параметры, рассмотренные в разделе "Параметр event_hook".

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

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

  • client_body_buffer_size

    client_body_in_file_only

    client_body_in_single_buffer

    client_header_buffer_size

    large_client_header_buffers

    output_buffers

    subrequest_output_buffer_size

    proxy_buffer_size

    proxy_buffering

    proxy_buffers

    proxy_busy_buffers_size

    proxy_request_buffering

    Секция, включающая в себя параметры, рассмотренные в разделе "Параметр buffers".

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

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

  • async_io

    Группа параметров отвечающих за настройку файлового асинхронного ввода-вывода.

    Группа, включающая в себя параметры, рассмотренные в разделе "Параметр async_io".

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

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

  • req_gunzip

    Секция, включающая в себя параметры, рассмотренные в разделе "Параметр req_gunzip".

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

    По умолчанию: значения группы задаются пользователем.

  • log_masking - группа параметров log_masking предназначена для задания правил маскирования чувствительной информации в логах событий и логов транзакции фильтров безопасности.

    Группа параметров, описанных в разделе "Параметр log_masking_rules".

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

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

  • http2 - группа параметров http2 позволяет регулировать настройки входящих подключений по протоколу http2.

    Группа параметров, описанных в разделе "Параметр http2".

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

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

  • logging - группа параметров logging предназначена для задания параметров отправки событий конфигуратора.

    Группа параметров, описанных в разделе "Параметр logging".

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

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

  • (2.4) pipelined_requests - в значении параметра указывается признак запрета использования HTTP pipelined requests для входящих запросов клиента. Если установлено значение off, то в случае получения нескольких pipelined запросов будет обработан только первый, после чего соединение будет закрыто и в логах появится сообщение об ошибке.

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

    • on;

    • off.

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

  • (2.4) http2_only - включение ограничения приема входящих соединений только по протоколу http2.

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

    • on;

    • off.

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

  • (2.4) keepalive_time - ограничивает максимальное время, в течение которого могут обрабатываться запросы в рамках keep-alive соединения. По достижении заданного времени соединение закрывается после обработки очередного запроса.

    Возможные значения: текстовое значение с суффиксом:

    • ms - миллисекунда;

    • s - секунда;

    • m - минута;

    • h - час;

    • d - день;

    • w - неделя;

    • M - месяц (30 дней);

    • y - год (365 дней).

    По умолчанию: 1h.

  • (2.4)grpc_error_processing - флаг, включающий генерацию ошибочных ответов с маппингом HTTP статусов в GRPC статусы.

    Доступно при указании http_version = 2.0.

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

    • true;

    • false.

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

  • proxy_ssl

    Группа параметров, задающая настройки ssl/tls соединения с upstream'ом (backend'ом).

    Группа, включающая в себя параметры, рассмотренные в разделе "Параметр upstream_ssl".

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

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

  • set_variable

    В значении параметра могут быть определены имена переменных и их значения.

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

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

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

    • name

      В значении параметра указывается имя переменной.

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

    • value

      В значении параметра указывается значение переменной.

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

  • (2.2) log_masking_rules

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

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

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

    • log_type

      Тип логов.

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

      • all - все типы;

      • security - логи транзакций фильтра безопасности;

      • event - логи событий.

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

    • object

      Объект, к которому применяется маскирование.

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

      • request_header - заголовки запроса;

      • response_header - заголовки ответа;

      • request_body - тело запроса;

      • response_body - тело ответа.

      Обязателен для заполнения.

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

    • header

      Имя заголовка, к которому применяется маскирование.

      Тип параметра: заполняется и обязателен тогда, когда указан object = request_header/response_header.

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

    • expression

      Регулярное выражение содержащее группы.

      Тип параметра: должно содержать хотя бы одну группу для определения фрагмента замены. Задается для object = request_body/response_body.

      Обязателен для заполнения.

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

    • replace_all

      Заменять все или первое найденное.

      Тип параметра: on/off определяет, будут ли заменяться только первое найденное значение или все. В том случае, если гарантировано вхождение будет только один раз рекомендуется устанавливать явно значение off для оптимизации производительности. Применяется только для object = request_body/response_body.

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

    • mask_symbol

      Символ, который используется для замены.

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

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

  • redirect

    В значении параметра возвращается временное перенаправление с кодом 302, 307 или постоянное перенаправление с кодом 301, 308.

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

    По умолчанию: значения группы задаются пользователем.

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

    • from

      В значении параметра задается регулярное значение URI запроса.

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

    • to

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

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

    Опциональные параметры:

    • type

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

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

      • redirect- статус код 302;

      • permanent- статус код 301;

      • redirect_temp - статус код 307;

      • redirect_perm - статус код 308.

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

      type: redirect 
      
    • condition

      В значении параметра задается выражение, включающее в себя следующие параметры: var, operator, val. Перенаправление будет осуществлено в случае выполнения заданного условия.

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

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

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

      • var

        В значении параметра указывается обозначение имени переменной.

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

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

      • operator

        В значении параметра задается оператор выражения.

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

        • '=';

        • '!=';

        • '~';

        • '~*';

        • '!~';

        • '!~*'.

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

      • val

        В значении параметра указывается значение переменной.

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

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