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

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

service:
  service_http_proxy:

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

Название

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

Описание

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

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

id

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

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

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

—

name

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

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

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

—

url

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

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

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

—

upstream_group_id / upstream_groups

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

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

В случае проксирования через main сервис: upstream_group_id: <value>, use_main_upstream_groups: true. В случае прямого проксирования: upstream_group_id: <value_name_group>, upstream_groups: []

—

allowed_queries

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

Указание разрешенных методов запроса и параметров запроса

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

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

profile_version

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

Версия профиля данного сервиса

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

—

description

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

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

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

—

listen

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

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

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

—

hostname

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

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

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

localhost

optional

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

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

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

—

transformations

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

Преобразование заголовков при выполнении заданных условий

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

—

filters

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

Фильтр modsecurity (проверка трафика на угрозы) и фильтр icap (проверка на вирусы)

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

—

validators

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

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

Параметры, описанные в разделе Настройка валидации в SOWA

—

modifiers

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

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

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

—

postprocessors

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

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

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

—

chains

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

Механизм для построения цепочек валидаторов любой сложности

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

—

server_streaming

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

Настройки серверного стриминга

Последовательность параметров (stream_type, message_delimiter, dont_chunk_response, parser_enable_condition)

—

server_streaming.stream_type

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

Тип стриминга

SSE, JSON_LINES, PROTOBUF_HTTP, GRPC

—

server_streaming.message_delimiter

Опциональный (при stream_type: JSON_LINES или SSE)

Делитель сообщений

LF (\n), DOUBLE_LF (\n\n), CRLF (\r\n), DOUBLE_CRLF (\r\n\r\n), NONE, AUTO

—

server_streaming.dont_chunk_response

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

Отключить кодирование фрагментированной передачи в ответе

true, false

false

server_streaming.parser_enable_condition

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

Условие включения парсера

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

—

Пример минимальной настройки с проксированием на upstream группу, определенную в 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

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

- 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

HttpProxy - optional#

Название

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

Описание

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

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

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

false

internal

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

Должен ли сервис быть доступен только локально

true, false

—

session_cache

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

Размер кэша для ssl/tls сессии

Группа параметров (type, name, size)

Оценивается автоматически

session_cache.type

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

Тип размера кэша

off, none, builtin, shared

—

session_cache.name

Обязательный (если type: shared)

Имя размера

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

—

session_cache.size

Обязательный (если type: builtin или type: shared)

Величина размера

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

—

session

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

Включение поддержки http сессии

true, false

false

session_timeout

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

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

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

60

session_cookie_name

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

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

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

SENGINX-SESSION-ID

session_redirect_timeout

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

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

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

5

session_show

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

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

true, false

false

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

upload_size_limit

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

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

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

size: 1Mb

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

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

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

Группа параметров (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 для проксирования. Внимание! Ряд функций недоступен при указании HTTP2

1.0, 1.1

1.0

cookie_domain

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

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

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

Отключен

cookie_domain.from

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

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

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

—

cookie_domain.to

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

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

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

—

cookie_flags

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

Один или несколько флагов (nosecure, nohttponly, nosamesite, secure, httponly, samesite=strict, samesite=lax, samesite=none) для cookie. Недоступно при http_version = 2.0

Группа параметров (cookie, flag)

Отключен

cookie_flags.cookie

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

Имя cookie. Для regex предшествует символ '~'

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

—

cookie_flags.flag

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

Флаг, который необходимо присвоить указанному cookie

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

—

cookie_path

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

Текст, который надо заменить в атрибуте path полей Set-Cookie. Поддерживает регулярные выражения. Недоступно при http_version = 2.0

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

Отключен

cookie_path.from

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

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

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

—

cookie_path.to

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

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

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

—

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_set_body

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

Тело, которое используется для отправки запроса на backend

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

—

proxy_headers_hash_bucket_size

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

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

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

64

proxy_headers_hash_max_size

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

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

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

512

kafka_logger_id

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

Идентификатор сервиса для обработки события

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

—

opentelemetry_tracing

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

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

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

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

max_headers

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

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

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

500

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

—

event_hook

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

Журналирование событий

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

—

async_io

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

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

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

—

req_gunzip

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

Параметры req_gunzip

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

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

response_gunzip

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

Параметры response_gunzip

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

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

log_masking

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

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

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

—

http2

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

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

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

—

logging

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

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

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

—

healthcheck_dynamic

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

Динамическая генерация ответов на запросы о состоянии экземпляра или сервиса

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

—

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

grpc_error_processing

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

Генерация ошибочных ответов с mapping HTTP статусов в GRPC статусы. Доступно при http_version = 2.0

true, false

false

proxy_ssl

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

Настройки ssl/tls соединения с upstream (backend)

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

—

set_variable

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

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

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

—

set_variable.name

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

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

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

—

set_variable.value

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

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

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

—

log_masking_rules

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

Правила маскирования данных в заголовках и телах запросов/ответов

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

—

log_masking_rules.log_type

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

Тип логов

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

all

log_masking_rules.object

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

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

request_header, response_header, request_body, response_body

—

log_masking_rules.header

Обязательный (если object = request_header/response_header)

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

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

—

log_masking_rules.expression

Обязательный (если object = request_body/response_body)

Регулярное выражение с группами для определения фрагмента замены

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

—

log_masking_rules.replace_all

Опциональный (если object = request_body/response_body)

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

on, off

on

log_masking_rules.mask_symbol

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

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

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

*

pass_request_body

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

Включение/выключение передачи тела запроса на upstream. При отключении обязательно занулить заголовок content-length

true, false

true

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)

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

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

—

Пример session_cache:

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

Пример 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

Пример cookie_flags:

optional:
  set_variable:
    - name: myvar
      value: "httponly"
  cookie_flags:
    - cookie: cookie1
      flag: $myvar
    - cookie: '~' cookie2
      flag: no$myvar

Пример cookie_path:

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