Тип с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".

    Тип параметра:

    1. В случае, если проксирование осуществляется с использованием сервиса типа service_main_proxy:

      upstream_group_id: <value>
      use_main_upstream_groups: true
      
    2. В случае, если проксирование осуществляется напрямую через сервис, соответствующего типа:

      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
      - localhost
    
  • optional

    Группа 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: false
    
  • log_format

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

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

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

  • keepalive_timeout

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

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

    • ms - миллисекунда;

    • s - секунда;

    • m - минута;

    • h - час;

    • d - день;

    • w - неделя;

    • M - месяц (30 дней);

    • y - год (365 дней).

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

    keepalive_timeout: 1h
    
  • keepalive_requests

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

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

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

    keepalive_requests: 9999999
    
  • proxy_read_timeout

    В значении параметра задается таймаут при чтении ответа proxy-service.

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

    • Если значение параметра ssl, общего параметра сервисов upstream, установлено on.

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

    • / ms - миллисекунда

    • s - секунда

    • m - минута

    • h - час

    • d - день

    • w - неделя

    • M - месяц (30 дней)

    • y - год (365 дней)

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

    proxy_read_timeout: 1d
    
  • proxy_send_timeout

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

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

    • Если значение параметра ssl, общего параметра сервисов upstream, установлено on.

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

    • / ms - миллисекунда

    • s - секунда

    • m - минута

    • h - час

    • d - день

    • w - неделя

    • M - месяц (30 дней)

    • y - год (365 дней)

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

    proxy_send_timeout: 1d
    
  • proxy_send_timeout

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

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

    • Если значение параметра ssl, общего параметра сервисов upstream, установлено on.

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

    • / ms - миллисекунда

    • s - секунда

    • m - минута

    • h - час

    • d - день

    • w - неделя

    • M - месяц (30 дней)

    • y - год (365 дней)

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

    proxy_send_timeout: 1d
    
  • proxy_connect_timeout

    Таймаут для установления соединения с проксированным сервером.

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

    • Если значение параметра ssl, общего параметра сервисов upstream, установлено on.

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

    • / ms - миллисекунда

    • s - секунда

    • m - минута

    • h - час

    • d - день

    • w - неделя

    • M - месяц (30 дней)

    • y - год (365 дней)

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

    proxy_connect_timeout: 20
    
  • upstream_rcv_buffer_size

    Задает размер буффера приема с upstream.

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

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

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

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

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

    upstream_rcv_buffer_size: 4k
    
  • downstream_rcv_buffer_size

    Задает размер буффера приема от клиента.

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

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

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

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

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

    downstream_rcv_buffer_size: 4k
    
  • upstream_send_buffer_size

    Задает размер буффера ответа на upstream.

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

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

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

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

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

    upstream_send_buffer_size: 4k
    
  • downstream_send_buffer_size

    Задает размер буффера ответа клиенту.

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

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

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

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

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

    downstream_send_buffer_size: 4k
    
  • send_downstream_no_delay

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

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

    • true;

    • false.

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

    send_downstream_no_delay: false
    
  • send_upstream_no_delay

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

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

    • true;

    • false.

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

    send_upstream_no_delay: false
    
  • sec_close_mode

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

    Доступно два варианта - soft и hard. В случае soft режима генерируются close фрэймы и отправляются клиенту и серверу. В случае hard - режима соединения просто разрываются.

    Тип параметра:

    • 'soft';

    • 'hard'.

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

    sec_close_mode: 'hard'
    
  • sec_close_code

    Определяет код закрытия передаваемый в close фрейме.

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

    • sec_close_mode: 'soft'.

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

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

    sec_close_code: 1002
    
  • sec_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.