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"

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.

service_mode

str

empty

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

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

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

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

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": "/var/lib/era/certificates",
  "keypass": "eb9c4458016d3f1e378d02004c4f4f50"
}

См. также