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

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

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

service:
  service_cache:

Сервис представляет собой группу, включающую в себя следующие параметры.

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

  • storages

    Общие настройки для подключения к хранилищу.

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

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

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

    • name

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

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

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

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

    • space

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

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

    Суффиксы:

    - `k / K` — килобайты;
    - `m / M` — мегабайты.
    

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

    space: 10m
    
    • entries

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

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

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

    entries: 8096
    
    • remove_time

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

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

    Суффиксы:

    • s / S — секунды;

    • m / M — минуты.

    По умолчанию: объекты не удаляются.

  • allowed_queries

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

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

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

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

  • instances

    Список сервисов.

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

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

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

    • id

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

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

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

    service:
       service_cache:
       ...
       instances:
         - id: 1
    

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

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

    • url

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

    url: /metrics/myapp
    

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

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

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

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

    • name

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

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

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

    optional/event_hook is not None.
    

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

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

    • profile_version

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

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

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

    • description

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

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

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

    • listen

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

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

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

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

    • hostname

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

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

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

    hostname
     - localhost
    
    • секция параметров service_cache

    • optional

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

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

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

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

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

    • и др.

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

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

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

    • filters

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

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

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

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

    • modifiers

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

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

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

    • validators

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

    Группа, включающая в себя параметры, описанные в разделе «Валидация».

    В качестве альтернативы использования механизмов validation_json и validation_wsdl_xsd рекомендуется использовать действия JsonValidation и XsdValidation соответственно.

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

    • opentelemetry_tracing

      Секция параметров телеметрии.

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

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

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

  • log_masking_rules

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

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

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

    • log_type — тип логов.

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

    • all — все типы;

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

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

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

    log_type: 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.

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

    replace_all: on
    
    • mask_symbol — символ, который используется для замены

    Возможные значения символа для замены:

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

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

Пример минимальной настройки сервиса:

version: 2.0.3
profile: profile_name
system:
  wrk_count: 4
  conn_count: 2048
  optional:
    storages:
      - name: testname
service:
  service_cache:
    storages:
      - name: testname
    instances:
      - id: 1
        url: /cache
        configuration_file: example.yml
        allowed_queries:
          - method: post

ServiceCache - allowed_queries#

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

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

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

    • get;

    • head;

    • post;

    • put;

    • options;

    • trace;

    • patch;

    • delete.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ServiceCache - optional#

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

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

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

    • debug;

    • info;

    • notice;

    • warn;

    • error;

    • crit;

    • alert;

    • off.

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

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

    Возможные значения: логическое значение:

    • true;

    • false.

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

    group_access_log: false
    
  • 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 — в значении параметра указывается имя cookie сессии.

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

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

    session_cookie_name: SENGINX-SESSION-ID
    
  • session_redirect_timeout — в значении параметра устанавливается время ожидания после отправки SEnginx ответа перенаправления клиенту в секундах.

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

    Возможные значения: целочисленное значение.

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

    session_redirect_timeout: 5
    
  • session_show — в значении параметра определяется возможность просматривать информацию о текущих сессиях.

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

    • on;

    • off.

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

    session_show: false
    
  • session_cache — в значении параметра определяется размер кэша для ssl сессии.

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

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

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

    • type — в значении параметра определяется тип размера кэша.

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

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

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

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

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

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

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

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

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

    type: shared.
    

    Возможные значения: cтроковое значение.

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

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

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

    type: builtin;
    type: shared.
    

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

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

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

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

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

    Пример:

    session_cache:
      type: shared
      name: my_name_size
      size: 4k
    
  • upload_size_limit — в значении параметра определяется ограничение размера тела запроса.

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

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

    size: 1Mb
    

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

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

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

    Суффиксы:

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

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

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

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

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

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

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

    • on;

    • of.

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

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

    Возможные значения: логическое значение:

    • true;

    • false.

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

    enable: true
    

    Пример:

    upload_size_limit:
      size: 40M
      drop: on
      enable: true
    
  • download_size_limit — в значении параметра определяется ограничение размера тела ответа.

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

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

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

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

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

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

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

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

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

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

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

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

    • on;

    • off.

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

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

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

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

    status: 413
    

    Пример:

    download_size_limit:
      size: 50k
      drop: off
      status: 413
    
  • kafka_logger_id — в значении параметра определяется идентификатор сервиса для обработки события.

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

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

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

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

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

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

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

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

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

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

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

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

  • limit_requests — группа параметров, описанных в разделе Пaраметр limit_requests.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • limit_conn — группа параметров limit_conn ограничивает число соединений по заданному ключу.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • on;

    • off.

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

  • healthcheck_dynamic - группа параметров healthcheck_dynamic предназначена для настройки динамической генерации ответов на запросы о текущем состоянии экземпляра или сервиса, объявленного в конфигурации.

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

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

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