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

Экземпляр типа сервиса service_main_proxy позволяет агрегировать множество сервисов различных типов на одном объекте типа listen.

Агрегированные сервисы также будут наследовать настройки фильтрации, upstream и др. из сервиса типа service_main_proxy.

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

service:
  service_main_proxy:

MainProxy - основные параметры#

Название

Обязательность

Описание

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

Значение по умолчанию

id

Обязательный

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

Текстовое значение (строка, число или их комбинация, разделитель — «_»)

—

listen

Обязательный

Настройки прослушивания. Если не указан, используются unix-сокеты

Последовательность параметров, описанных в разделе Параметр listen

—

hostname

Обязательный

Виртуальное имя сервера

Последовательность строковых значений

—

url

Обязательный

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

Строковое значение

—

upstream_groups

Обязательный

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

Последовательность параметров, описанных в разделе Параметр upstream

—

name

Опциональный (обязательный, если указан optional/event_hook)

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

Строковое значение

Значение задается пользователем

description

Опциональный

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

Текстовое значение

Значение задается пользователем

use_upstream_groups

Опциональный

Вкл./Откл. балансировки на уровне main сервиса

true, false

false

optional

Опциональный

Таймауты, сессия, ограничения, утилиты и др.

Параметры, описанные в разделе «MainProxy - optional»

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

filters

Опциональный

Фильтр modsecurity (проверка трафика на угрозы) и фильтр icap (проверка на вирусы). Наследуется всеми сервисами, указанными после service_main_proxy

Группа параметров и их значения

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

validators

Опциональный (deprecated)

Валидация тела запроса/ответа. Рекомендуется использовать JsonValidation и XsdValidation

Параметры, описанные в разделе Валидация

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

modifiers

Опциональный

Изменение содержимого заголовков запроса и ответа

Параметры, описанные в разделе Параметр modifiers

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

postprocessors

Опциональный

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

Параметры, описанные в разделе Постобработчик postprocessor_error

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

Пример:

version: 2.0.3
profile_version: XXX
profile: uko_web
system:
  wrk_count: 4
  conn_count: 4096
service:
  service_main_proxy:
    - id: 1
      listen:
        - port: 8443
          ssl:
            certificate: server_dev.cer
            certificate_key: server_dev.key
            protocols:
              - TLSv1.2
            ciphers_str: "HIGH:!aNULL:NULL-SHA256"
            session_cache:
              type: "shared"
              name: "TLS"
              size: 20m
      hostname:
        - localhost
        - 127.0.0.1
      url: /
      optional:
        file_upload_limit: off
        limit_req:
          enabled: false
          target: src_ip
          rate: 1000
          burst: 2000
          status_code: 429
      upstream_groups:
        - id: upstream_groups_v1
          server: '127.0.0.1:18091'
          weight: '5'
      postprocessors:
        !include: postprocessor_error.yml
      filters:
        filter_mds:
          config:
            SecAuditLogParts: ABFHIJKZG
          custom_rules:
            - ufs_rules/rules.conf
  service_http_proxy:
    !include: **/services.yml

MainProxy - optional#

Название

Обязательность

Описание

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

Значение по умолчанию

log_level

Опциональный

Переопределение уровня логирования для сервиса

debug, info, notice, warn, error, crit, alert, off

Наследуется от значения в system

client_header_timeout

Опциональный

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

Текстовое значение с суффиксом: ms, s, m, h, d, w, M, y

60s

client_body_timeout

Опциональный

Таймаут при чтении тела запроса клиента

Текстовое значение с суффиксом: ms, s, m, h, d, w, M, y

60s

keepalive_timeout

Опциональный

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

Текстовое значение с суффиксом: ms, s, m, h, d, w, M, y

75s

keepalive_requests

Опциональный

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

Целочисленное значение

10000

send_timeout_to_client

Опциональный

Таймаут при передаче ответа клиенту (между двумя операциями записями)

Текстовое значение с суффиксом: ms, s, m, h, d, w, M, y

60s

session

Опциональный

Включение поддержки http сессии (session_module: отслеживание http запросов, запись информации о сеансе, установка cookie в браузере клиента)

on, off

off

session_timeout

Опциональный

Таймаут сессии

Целочисленное значение

60

session_cookie_name

Опциональный

Имя куки сессии

Текстовое значение

SENGINX-SESSION-ID

session_redirect_timeout

Опциональный

Время ожидания после отправки SEnginx ответа перенаправления клиенту в секундах. Не должно быть больше session_timeout

Целочисленное значение

5

session_show

Опциональный

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

true, false

false

file_upload_limit

Опциональный

Сброс TCP-соединения при попытке загрузки файла с заголовком «multipart/form-data». Защита от DOS-атак

on, off

on

upload_size_limit

Опциональный

Ограничение размера тела запроса

Группа параметров (size, drop, enable)

size: 10Mb

upload_size_limit.size

Обязательный (в рамках upload_size_limit)

Максимальный размер тела запроса

Текстовое значение с суффиксом: число (байты), k/K (килобайты), m/M (мегабайты)

—

upload_size_limit.drop

Опциональный (в рамках upload_size_limit)

Сброс соединения при превышении size

on, off

off

upload_size_limit.enable

Опциональный (в рамках upload_size_limit)

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

true, false

true

download_size_limit

Опциональный

Ограничение размера тела ответа

Группа параметров (size, drop, status)

1Mb

download_size_limit.size

Обязательный (в рамках download_size_limit)

Максимальный размер тела ответа

Текстовое значение с суффиксом: число (байты), k/K (килобайты), m/M (мегабайты)

—

download_size_limit.drop

Опциональный (в рамках download_size_limit)

Сброс соединения при превышении size

on, off

off

download_size_limit.status

Опциональный (в рамках download_size_limit)

Статус код при превышении размера тела ответа

Текстовое значение

413

http_version

Опциональный

Версия протокола HTTP для проксирования

1.0, 1.1

1.1

cookie_domain

Опциональный

Текст, который нужно изменить в атрибуте domain полей Set-Cookie заголовка ответа proxy-service

Группа параметров (from, to)

Отключен

cookie_domain.from

Обязательный (в рамках cookie_domain)

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

Строковое значение

—

cookie_domain.to

Обязательный (в рамках cookie_domain)

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

Строковое значение

—

proxy_connect_timeout

Опциональный

Таймаут для установления соединения с proxy-service

Текстовое значение с суффиксом: ms, s, m, h, d, w, M, y

60s

proxy_read_timeout

Опциональный

Таймаут при чтении ответа proxy-service

Текстовое значение с суффиксом: ms, s, m, h, d, w, M, y

60s

proxy_send_timeout

Опциональный

Таймаут при передаче запроса proxy-service

Текстовое значение с суффиксом: ms, s, m, h, d, w, M, y

60s

proxy_headers_hash_bucket_size

Опциональный

Размер корзины для хэш-таблиц, используемых директивой set_header

Текстовое значение

64

proxy_headers_hash_max_size

Опциональный

Максимальный размер хэш-таблиц, используемых директивой set_header

Текстовое значение

512

set_variable

Опциональный

Определение имен переменных и их значений

Последовательность параметров (name, value)

Значения последовательности задаются пользователем

set_variable.name

Обязательный (в рамках set_variable)

Имя переменной

Текстовое значение

—

set_variable.value

Обязательный (в рамках set_variable)

Значение переменной

Текстовое значение

—

opentelemetry_tracing

Опциональный

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

Параметры, описанные в разделе Параметр opentelemetry_tracing

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

max_headers

Опциональный

Максимальное количество заголовков в клиентском запросе

Целочисленное значение

500

event_hook

Опциональный

Журналирование событий. Наследуется всеми сервисами, указанными после service_main_proxy

Параметры, описанные в разделе Параметр event_hook

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

security_headers

Опциональный

Определение безопасных заголовков ответа

Параметры, описанные в разделе Параметр security_headers

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

exclude_req_stat / exclude_resp_stat

Опциональный

Исключение сервисов из статистики учета реквестов/респонсов

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

Значения последовательности задаются пользователем

limit_req

Опциональный

Ограничение скорости обработки запросов

Параметры, описанные в разделе Параметр limit_req

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

limit_requests

Опциональный

Ограничение запросов

Параметры, описанные в разделе Параметр limit_requests

—

robot_mitigation

Опциональный

Противодействие роботам и сканированию портов

Параметры, описанные в разделе Параметр robot_mitigation

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

ip_behavior

Опциональный

Мониторинг поведения пользователей при доступе к серверу

Параметры, описанные в разделе Параметр ip_behavior

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

cookie_poisoning

Опциональный

Отслеживание заголовков Set-Cookies и значений cookie в ответе. Зависит от session_module

Параметры, описанные в разделе Параметр cookie_poisoning

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

gzip

Опциональный

Сжатие ответа методом gzip

Параметры, описанные в разделе Параметр gzip

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

async_io

Опциональный

Настройка файлового асинхронного ввода-вывода

Параметры, описанные в разделе Параметр async_io

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

req_gunzip

Опциональный

Параметры req_gunzip

Параметры, описанные в разделе Параметр req_gunzip

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

log_masking

Опциональный

Правила маскирования чувствительной информации в логах

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

—

http2

Опциональный

Настройки входящих подключений по протоколу http2

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

—

logging

Опциональный

Параметры отправки событий конфигуратора

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

—

pipelined_requests

Опциональный

Запрет использования HTTP pipelined requests для входящих запросов

on, off

on

http2_only

Опциональный

Ограничение приема входящих соединений только по протоколу http2

on, off

off

keepalive_time

Опциональный

Максимальное время обработки запросов в рамках keep-alive соединения

Текстовое значение с суффиксом: ms, s, m, h, d, w, M, y

1h

redirect

Опциональный

Возврат временного (302, 307) или постоянного (301, 308) перенаправления

Группа параметров (from, to, type, condition)

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

redirect.from

Обязательный (в рамках redirect)

Регулярное выражение URI запроса

Текстовое значение

—

redirect.to

Обязательный (в рамках redirect)

Заменяющая строка

Текстовое значение

—

redirect.type

Опциональный (в рамках redirect)

Тип перенаправления. Допускается несколько типов

redirect (302), permanent (301), redirect_temp (307), redirect_perm (308)

redirect

redirect.condition

Опциональный (в рамках redirect)

Выражение (var, operator, val). Перенаправление при выполнении условия

Последовательность параметров (var, operator, val)

—

redirect.condition.var

Обязательный (в рамках redirect.condition)

Обозначение имени переменной

Текстовое значение

—

redirect.condition.operator

Обязательный (в рамках redirect.condition)

Оператор выражения

=, !=, ~, ~*, !~, !~*

—

redirect.condition.val

Обязательный (в рамках redirect.condition)

Значение переменной

Текстовое значение

—

Пример upload_size_limit:

upload_size_limit:
  size: 40M
  drop: on
  enable: true

Пример download_size_limit:

download_size_limit:
  size: 50k
  drop: off
  status: 413

Пример cookie_domain:

cookie_domain:
  from: localhost
  to: example.org