Web Server (ws)

Описание

Предоставляет доступ к API системы через HTTP и WebSocket, а также обслуживает выдачу статических файлов системных и ролевых веб-приложений. Для доступа к API проводит авторизацию и работает с HTTP-сессиями через выставление и использование Cookie. Для некоторых endpoint’ов доступна авторизация по токену с использованием заголовка `Authorization: Bearer <intergation_point.token_local>`.

Резервируется и масштабируется в режиме Active-Active.

При запуске роли проверяется сертификат указанный в параметре *certdir*. Если валидация не пройдена, роль запускается с неизменяемым сертификатом. Сертификат может быть переопределен через настройки домена.

Table 1. Системные характеристики

Код

ws

Режим работы

Сервис

Режим резервирования

Active-Active

Типы сайтов

Любые

Слой

Бизнес-логика

Размещение

Пограничный

Сохранение и восстановление состояния при перезагрузке

Нет

Приложение

era_ws

Ограничения

  • Присутствует в начальной конфигурации.

  • Является пограничной ролью, использует сертификат TLS для HTTPS и WSS подключений.

Параметры

Table 2. Параметры
Имя Тип Умолчание Описание

name

str

required

Имя. Может состоять из латинских букв и цифр, должно начинаться с буквы.

roletype

str

required

Тип роли. Возможные значения: "ws".

iface

str

required

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

ext

json

empty

Дополнительные опции роли. Содержит json объект или список.

enabled

bool

empty

Флаг активности роли. При установке в false роль не участвует в валидации и не запускается.

roleid

int

required

Идентификатор роли.
Уникален для всей системы, независимо от сайта или сервера. Нельзя изменить после присвоения. Целое число от 1 до 9999

separate

bool

false

Признак выделения роли в отдельную ноду.

apdir

str

empty

Алиас каталога на сервере для хранения файлов autoprovision.

certdir

str

empty

Алиас каталога на сервере для хранения сертификатов (файлы 'server.crt' и 'server.key').
В случае необходимости указания цепочки сертификатов до центра сертификации (CA - Certification Authority) его необходимо разместить в конце файла сертификата.
Если путь не указан, то поиск сертификатов осуществляется в каталоге "/usr/lib/era/era_ws/priv/ssl".

Этот параметр и применяется только в случае, когда не применен сертификат, указанный в настройках домена (settings.certificate_pem):

  • обращение к серверу произведено на доменное имя, не соответствующее доменному дереву платформы, и одновременно сертификат не указан в настройках мастер-домена;

  • в домене обращения и в его родительских доменах вплоть до мастер-домена в настройках не указан сертификат;

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

keypass

str

empty

Пароль для расшифровки файла секретного ключа сертификата.

http_ifaces

array<str>

[]

Список интерфейсов HTTP. Указываются алиасы интерфейсов сервера.
Если не указано ни одного, то слушаются все интерфейсы (0.0.0.0).

Если в момент запуска сервера какой-либо указанный из сетевых интерфейсов не поднят, то слушатель не запускается. После его появления для запуска слушателя необходимо перезагрузить ноду микросервиса.

https_ifaces

array<str>

[]

Список интерфейсов HTTPS. Указываются алиасы интерфейсов сервера.
Если не указано ни одного, то слушаются все интерфейсы (0.0.0.0).

Если в момент запуска сервера какой-либо указанный из сетевых интерфейсов не поднят, то слушатель не запускается. После его появления для запуска слушателя необходимо перезагрузить ноду микросервиса.

httpport

int

80

Локальный порт веб-сервера для открытых TCP подключений.

httpsport

int

443

Локальный порт веб-сервера для TLS поключений.

ports_mode

str

"both"

Режим работы портов.
Возможные значения:

  • "both" – http и https порты открыты;

  • "http-only" – открыт только http порт;

  • "https-only" – открыт только https порт;

  • "http+redir" – http и https порты открыты, но https работает в режиме перенаправления на http;

  • "https+redir" – http и https порты открыты, но http работает в режиме перенаправления на https.

При перенаправлении на https меняется схема, но сохраняется имя хоста, если обращение происходит по доменному имени.
Если же обращение происходит по IP-адресу, то для успешного перенаправления необходимо в параметрах мастер-домена установить свойство https_host.
В частности, это необходимо для корректной работы продуктового слоя в случае, когда нет ни одного экземпляра веб-сервера, у которого по http доступен внутренний интерфейс.

rest_reattempts_sec

int

60

Интервал в секундах, в течение которого сервер не возвращает ответы 5xx на отправляемые запросы, а вместо этого делает периодические попытки повторить запрос.
Значение 0 выключает механизм переповторов.
Применяется на websocket-подключениях при обработке запроса "rest".
Подробнее о работе параметра.

service_mode

str

empty

Режим обслуживания запросов

  • "both" – обе части работают (и API, и статика (системные и ролевые веб-приложения));

  • "api-only" – работает только api;

  • "static-only" – работает только статика.

tags

array<str>

Список ключей для построения различных групп вебсерверов и указания списков в качестве точек доступа для микросервисов продуктового слоя.
В работе самого вебсервера не применяется.

order

int

0

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

websock_debug_level_enabled

bool

true

Выключатель особой настройки уровня логирования веб-сокет подключений.
По умолчанию: true.
Возможные значения:

  • true - включен режим особой настройки уровня логирования веб-сокет подключений. В этом случае уровень логирования определяется соседним параметром websock_debug_level.

  • false - уровень логирования веб-сокет подключений определяется через установленный уровень логирования текущей ноды (может быть изменен администратором мастер-домена в приложении настроек).

    • 'DEBUG' - соответствует уровню логирования вебсокет подключений 6.

    • 'TRACE' - соответствует уровню логирования вебсокет подключений 5.

    • 'INFO' - соответствует уровню логирования вебсокет подключений 3.

    • 'WARNING' - соответствует уровню логирования вебсокет подключений 2.

    • 'ERROR' - соответствует уровню логирования вебсокет подключений 1.

    • 'CRASH' - соответствует уровню логирования вебсокет подключений 0.

websock_debug_level

int

0

Уровень логирования сообщений протокола websocket.
По умолчанию: 0.
Возможные значения:

  • 0 – не логирует;

  • 1 – логирует старты стопы подключений;

  • 2 – логирует простые ошибки;

  • 3 – логирует ошибки с упоминанием тела ошибочного сообщения;

  • 4 – логирует факт всех входящих и исходящих сообщений;

  • 5 – логирует все входящие и исходящие сообщения, отрезая первые 1024 байта;

  • 6 – логирует полностью все входящие и исходящие сообщения.

wwwdir

string

empty

Алиас каталога на сервере со статическими ресурсами web-сервера.
По умолчанию: "/usr/lib/era/era_ws/priv/www"

Пример конфигурации

Управление конфигурацией производится в приложении, доступном для администраторов мастер-домена. Приложение скрывает полное содержание конфигурации, однако тем не менее оно доступно через API.

Конфигурация содержит раздел для описания всех экземпляров всех ролей. Параметры определяются для каждого конкретного экземпляра роли.

Пример узла
{
  "iface": "eth0",
  "name": "ws1",
  "roletype": "ws",

  "roleid": 11230,

  "certdir": "alias://paths/default_certdir",
  "keypass": "eb9c4458016d3f1e378d02004c4f4f50",

  "httpport": 80,
  "httpsport": 443,
  "http_ifaces": ["eth0", "eth2"],
  "https_ifaces": [],
  "ports_mode": "both",

  "service_mode": "both",

  "websock_debug_level_enabled": 1,
  "websock_debug_level": 2
}

См. также