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

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

service:
  service_web_socket_proxy:

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

Название

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

Описание

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

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

id

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

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

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

—

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: []

—

name

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

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

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

—

profile_version

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

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

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

—

description

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

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

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

—

listen

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

Параметр является обязательным только для сервиса типа service_main_proxy. Если не указан, используются unix-сокеты

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

—

hostname

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

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

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

localhost

optional

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

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

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

—

modifiers

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

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

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

—

filters

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

Фильтр web_socket — обмен сообщениями между браузером и веб-сервером в режиме реального времени. Параметры описаны в разделе Фильтр WebSocket

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

—

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

version: 2.0.1
profile: test_websocket
system:
  wrk_count: 4
  conn_count: 30000
  optional:
    default_type: application/octet-stream
    log_level: error
service:
  service_web_socket_proxy:
    - id: 1
      listen:
        - port: 9090
        - port: 9093
          ssl:
            certificate: certificate
            certificate_key: privatekey
            protocols:
              - TLSv1
              - TLSv1.1
              - TLSv1.2
            ciphers:
              - value:
                  - "HIGH"
              - prefix: "!"
                value:
                  - "aNULL"
              - prefix: "!"
                value:
                  - "MD5"
      hostname:
        - 10.x.x.x
        - SERVER-0007
      url: /ws
      upstream:
        ssl: on
        url: /ws_stub
        servers:
          - server: 10.x.x.x:8943
          - server: SERVER-19:8943

Пример:

version: 2.0.1
profile: test-profile
system:
  wrk_count: 4
  conn_count: 30000
  optional:
    default_type: application/json
    log_level: info
service:
  service_web_socket_proxy:
    - id: 1
      listen:
        - address: "127.0.0.1"
          port: 9080
        - address: "domain-name0"
          port: 9443
          ssl:
            certificate: certificate
            certificate_key: privatekey
            protocols:
              - TLSv1
              - TLSv1.1
              - TLSv1.2
            ciphers:
              - value:
                  - "HIGH"
              - prefix: "!"
                value:
                  - "aNULL"
              - prefix: "!"
                value:
                  - "MD5"
            verify_client: optional_no_ca
            verify_depth: 5
            client_certificate: client-cert-name
      hostname:
        - 12.x.x.x
        - NAME-OF-VS
      url: /sowa
      upstream_group_id: backend
      upstream_groups:
        - id: backend
          ssl: on
          servers:
            - server: domain-name1:80
              weight: 2
              max_conns: 10000
              max_fails: 10
              fail_timeout: 1m
              backup: False
            - server: domain-name2:8080
              weight: 5
              max_conns: 20000
              max_fails: 3
              fail_timeout: 15s
              backup: True
      optional:
        keepalive_timeout: 2h
        keepalive_requests: 5000
        proxy_connect_timeout: 3m
        proxy_read_timeout: 150s
        proxy_send_timeout: 1h
        upstream_rcv_buffer_size: 32k
        downstream_rcv_buffer_size: 32k
        upstream_send_buffer_size: 1m
        downstream_send_buffer_size: 1m
        send_downstream_no_delay: True
        send_upstream_no_delay: False
        sec_close_mode: soft
        sec_close_code: 1002
        sec_close_reason: "Message with close reason"
      filters:
        filter_web_socket:
          http:
            - type: WsAsynHttpFilter
              action: disconnect
              stage: REQ
              apply:
                filter_mds:
                  rules:
                    - base
                    - owasp-crs
                    - comodo
              content_type: application/x-www-form-urlencoded
              connect_timeout: 10s
              read_timeout: 5s
              write_timeout: 5s
          nohttp:
            - type: WsFrameTypeFilter
              action: disconnect
              stage: RESP
              frame_types:
                - DATA
                - CLOSE
              rule: ALLOWED

WebSocketProxy - 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

log_format

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

Формат логирования

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

—

keepalive_timeout

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

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

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

1h

keepalive_requests

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

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

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

9999999

proxy_read_timeout

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

Таймаут при чтении ответа proxy-service. Используется, если upstream/ssl: on

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

1d

proxy_send_timeout

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

Таймаут при передаче запроса проксированному серверу. Используется, если upstream/ssl: on

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

1d

proxy_connect_timeout

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

Таймаут для установления соединения с проксированным сервером. Используется, если upstream/ssl: on

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

20

upstream_rcv_buffer_size

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

Размер буфера приема с upstream

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

4k

downstream_rcv_buffer_size

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

Размер буфера приема от клиента

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

4k

upstream_send_buffer_size

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

Размер буфера ответа на upstream

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

4k

downstream_send_buffer_size

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

Размер буфера ответа клиенту

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

4k

send_downstream_no_delay

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

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

true, false

false

send_upstream_no_delay

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

Будет ли обработчик ожидать окончания приема серии пакетов данных от клиента, либо передавать данные upstream-сервису по мере поступления

true, false

false

sec_close_mode

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

Способ закрытия соединения при блокировке сообщения фильтром: soft — генерируются close фреймы; hard — соединения разрываются

soft, hard

hard

sec_close_code

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

Код закрытия в close фрейме. Используется, если sec_close_mode: soft

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

1002

sec_close_reason

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

Причина закрытия в close фрейме. Используется, если sec_close_mode: soft

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

""

income_block_message

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

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

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

—

outgoing_block_message

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

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

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

—

upload_size_limit

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

Лимит загружаемых данных для передачи. Если превышен, сессия прервана

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

1Mb

pipelined_requests

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

Запрет использования HTTP pipelined requests для входящих запросов. При off обработается только первый запрос, затем соединение закроется

on, off

on

http2_only

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

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

on, off

off

download_size_limit

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

Лимит скачанных данных для передачи. Если превышен, сессия прервана

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

1Mb

size_limit_decompression

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

Необходимо ли сжимать сообщение перед проверкой лимита

true, false

false

set_variable

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

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

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

—

set_variable.name

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

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

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

—

set_variable.value

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

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

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

—

opentelemetry_tracing

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

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

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

—

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

—

log_masking

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

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

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

—

logging

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

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

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

—

healthcheck_dynamic

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

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

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

—

proxy_ssl

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

Настройки ssl соединения

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

—

keepalive_time

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

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

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

1h