Тип сeрвиса WebSocketProxy#
В контексте service объявляется соответствующий тип сервиса service_web_socket_proxy:
service:
service_web_socket_proxy:
Каждый сервис представляет собой последовательность, включающую в себя следующие параметры:
Обязательные параметры:
id
Идентификатор сервиса в контексте всего профиля. Используется, например, в названии директории и других системных файлах, хранящих информацию о сервисе.
Значение параметра id должно быть уникальным.
Идентификатор может быть строкой, числом, или их комбинацией. В качестве разделителя слов необходимо использовать знак нижнее подчеркивание " _ ".
Количество сервисов не ограничено конфигуратором явно.
- id: 1 ... - id: my_service_one ...Тип параметра: текстовое значение.
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".
Тип параметра:
В случае, если проксирование осуществляется с использованием сервиса типа service_main_proxy:
upstream_group_id: <value> use_main_upstream_groups: trueВ случае, если проксирование осуществляется напрямую через сервис, соответствующего типа:
upstream_group_id: <value_name_group> upstream_groups: - id: <value_name_group> servers: - server: <value_ip_address>
Пример минимальной настройки:
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
Опциональные параметры:
name
Технологическое название сервиса, используемое для идентификация сервиса в логах транзакций.
Значение параметра name должно быть уникальным.
Тип параметра: строковое значение.
По умолчанию: значение задается пользователем.
profile_version
В значении параметра определяется версия профиля данного сервиса.
Тип параметра: текстовое значение.
По умолчанию: значение задается пользователем.
description
Параметр предназначен для хранения строки с описанием сервиса.
Значение параметра description не является уникальным.
Тип параметра: текстовое значение.
По умолчанию: значение задается пользователем.
listen
Параметр listen является обязательным только для сервиса типа service_main_proxy. Для сервисов иных типов параметр listen опционален.
В случае, если параметр listen не указан (имеется ввиду наличие данного параметра в сервисе типа service_main_proxy и отсутствие в сервисах иных типов), для взаимодействия между сервисами используются unix-сокеты.
Последовательность, включающая в себя параметры, описанные в разделе "Параметр listen".
Тип параметра: последовательность параметров и их значения.
По умолчанию: значение задается пользователем.
hostname
В значении параметра указывается виртуальное имя сервера.
Тип параметра: последовательность строковых значений.
По умолчанию:
hostname - localhostoptional
Группа optional используется в сервисе для:
вызова различных таймаутов;
настройки сессии;
ограничения по размеру лимита тела запроса/ответа;
вызова различных утилит;
и др.
Группа, включающая в себя параметры, описанные в разделе "Параметр WebSocketProxy - optional".
Тип параметра: группа параметров и их значения.
По умолчанию: значение задается пользователем.
modifiers
Группа modifiers позволяет изменять содержимое заголовков запроса и ответа.
Группа, включающая в себя параметры, описанные в разделе "Параметр modifiers".
Тип параметра: группа параметров и их значения.
По умолчанию: значение задается пользователем.
filters
Группа, включающая в себя следующие параметры:
фильтр web_socket - предназначен для обмена сообщениями между браузером и веб-сервером в режиме реального времени. Фильтр web_socket представляет собой последовательность параметров, описанных в разделе "Фильтр WebSocket".
Тип параметра: группа параметров и их значения.
По умолчанию: значение задается пользователем.
Пример:
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
WеbSocketProxy - 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.
По умолчанию:
group_access_log: falselog_format
В значении параметра указывается формат логирования.
Тип параметра: текстовое значение.
По умолчанию: значение по умолчанию отсутствует.
keepalive_timeout
В значении параметра указывается таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера.
Тип параметра: текстовое значение с суффиксом:
ms - миллисекунда;
s - секунда;
m - минута;
h - час;
d - день;
w - неделя;
M - месяц (30 дней);
y - год (365 дней).
По умолчанию:
keepalive_timeout: 1hkeepalive_requests
В значении параметра указывается максимальное число запросов, которые можно сделать по одному keep-alive соединению.
Тип параметра: целочисленное значение.
По умолчанию:
keepalive_requests: 9999999proxy_read_timeout
В значении параметра задается таймаут при чтении ответа proxy-service.
Используется в случае:
Если значение параметра ssl, общего параметра сервисов upstream, установлено on.
Тип параметра: текстовое значение с суффиксом:
/ ms - миллисекунда
s - секунда
m - минута
h - час
d - день
w - неделя
M - месяц (30 дней)
y - год (365 дней)
По умолчанию:
proxy_read_timeout: 1dproxy_send_timeout
Таймаут при передаче запроса проксированному серверу.
Используется в случае:
Если значение параметра ssl, общего параметра сервисов upstream, установлено on.
Тип параметра: текстовое значение с суффиксом:
/ ms - миллисекунда
s - секунда
m - минута
h - час
d - день
w - неделя
M - месяц (30 дней)
y - год (365 дней)
По умолчанию:
proxy_send_timeout: 1dproxy_send_timeout
Таймаут при передаче запроса проксированному серверу.
Используется в случае:
Если значение параметра ssl, общего параметра сервисов upstream, установлено on.
Тип параметра: текстовое значение с суффиксом:
/ ms - миллисекунда
s - секунда
m - минута
h - час
d - день
w - неделя
M - месяц (30 дней)
y - год (365 дней)
По умолчанию:
proxy_send_timeout: 1dproxy_connect_timeout
Таймаут для установления соединения с проксированным сервером.
Используется в случае:
Если значение параметра ssl, общего параметра сервисов upstream, установлено on.
Тип параметра: текстовое значение с суффиксом:
/ ms - миллисекунда
s - секунда
m - минута
h - час
d - день
w - неделя
M - месяц (30 дней)
y - год (365 дней)
По умолчанию:
proxy_connect_timeout: 20upstream_rcv_buffer_size
Задает размер буффера приема с upstream.
Тип параметра: текстовое значение с суффиксом:
число без суффикса - байты
k / K - килобайты
m / M - мегабайты
По умолчанию:
upstream_rcv_buffer_size: 4kdownstream_rcv_buffer_size
Задает размер буффера приема от клиента.
Тип параметра: текстовое значение с суффиксом:
число без суффикса - байты
k / K - килобайты
m / M - мегабайты
По умолчанию:
downstream_rcv_buffer_size: 4kupstream_send_buffer_size
Задает размер буффера ответа на upstream.
Тип параметра: текстовое значение с суффиксом:
число без суффикса - байты
k / K - килобайты
m / M - мегабайты
По умолчанию:
upstream_send_buffer_size: 4kdownstream_send_buffer_size
Задает размер буффера ответа клиенту.
Тип параметра: текстовое значение с суффиксом:
число без суффикса - байты
k / K - килобайты
m / M - мегабайты
По умолчанию:
downstream_send_buffer_size: 4ksend_downstream_no_delay
Определяет, будет ли обработчик ожидать окончания приема серии пакетов данных от upstream сервиса, либо будет передавать данные дальше клиенту по мере их поступления.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
send_downstream_no_delay: falsesend_upstream_no_delay
Определяет, будет ли обработчик ожидать окончания приема серии пакетов данных от клиента либо будет передавать данные дальше upstream-сервису по мере их поступления.
Тип параметра: логическое значение:
true;
false.
По умолчанию:
send_upstream_no_delay: falsesec_close_mode
Определяет способ закрытия соединения в случае, если сообщение не соответствует правилам фильтрации и для этого случая задан тип действия - закрытие соединения.
Доступно два варианта - soft и hard. В случае soft режима генерируются close фрэймы и отправляются клиенту и серверу. В случае hard - режима соединения просто разрываются.
Тип параметра:
'soft';
'hard'.
По умолчанию:
sec_close_mode: 'hard'sec_close_code
Определяет код закрытия передаваемый в close фрейме.
Используется в случае:
sec_close_mode: 'soft'.
Тип параметра: целочисленное значение.
По умолчанию:
sec_close_code: 1002sec_close_reason
Определяет причину закрытия передаваемую в close фрейме.
Используется в случае:
sec_close_mode: 'soft'.
Тип параметра: строковое значение.
По умолчанию:
sec_close_reason: ""income_block_message
В значении параметра устанавливается отправка сообщения клиенту, когда его сообщение заблокировано фильтром. Если не указано, сообщение не отправляется.
Тип параметра: строковое значение.
По умолчанию: значение задается пользователем.
outgoing_block_message
В значении параметра устанавливается отправка сообщения клиенту, когда сообщение сервера заблокировано фильтром. Если не указано, сообщение не отправляется.
Тип параметра: строковое значение.
По умолчанию: значение задается пользователем.
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.