ws/ExternalRoutedHosts

Коллекция для указания DNS-имен для веб-серверов мастер-сайта, запросы к которым вебсервер маршрутизирует по особым сценариям: выдача размещаемой извне статики и проксирование http- и websocket-запросов.

Поддерживается использование сертификатов TLS и регулярная автоматическая выписка с использованием сервиса LetsEncrypt.

При создании маршрутов могут использоваться привязки к типам портов, чтобы осуществлять различную маршрутизацию для открытых портов, и портов с TLS-сертификатами. Например, таким образом можно перенаправить все незащищенные соединения на TLS порт. Это также доступно для основных доменных имен и IP-адресов, так что этот функционал является альтернативой параметру 'ports_mode' микросервиса ws.

Обслуживаются микросервисом webserver.

Тип хранилища: category.

Table 1. Поля класса
Поле Описание

id

Идентификатор

host

DNS-имя или ip-адрес, маршрутизируемое на сервер или серверы сайта.

enabled

Признак включенности. По умолчанию true.

routes

Сортированный по убыванию список правил маршрутизации. Массив объектов, содержащих поля:

  • port_type - тип порта, к которому применяется правило (открытый или TLS). Возможные значения:

    • 'all' - для всех типов портов. Применяется по умолчанию.

    • 'http' - только для открытых портов.

    • 'https' - только для TLS-портов.

  • path - путь в URL, начиная с которого действует маршрут. Для всех обработчиков, кроме перенаправлений, значение в конце принудительно дополняется маской произвольного остаточного пути "/[…​]", если таковая не указана в самом значении. Перенаправления же работают строго на конкретно указанный путь. Примеры корректных путей:

    • /

    • /[…​]

    • /folder1/folder2

    • /folder1/resource

    • /folder1/folder2/[…​]

    • /proxy/[…​]

    • /proxy/:domain/:port/[…​]

    • /my_path/:any1/:any2/static/[…​]

  • paths - массив путей в URL, разворачивающий маршрут в несколько однотипных маршрутов. Применяется аналогично параметру 'path' в том случае, если параметр 'path' не задан.

  • handler - тип обработчика. Для каждого обработчика задаются дополнительные специфические поля. Доступны обработчики:

    • 'static' - выдает статику из указанного каталога. Дополнительные параметры обработчика:

      • directory. Корневой каталог со статическим содержимым для выдачи. Каталог должен быть указан через алиас ":SYNC/common/", ":GLOBALSHARE/", ":SITESHARE/" или ":LOCAL/". Содержимое адресуется относительными путями, прицепляемыми к указанному path.

    • 'redirect' - осуществляет перенаправление на константный путь, выдавая ответ 3xx. Дополнительные параметры обработчика:

      • http_code - Код ответа 3xx. По умолчанию 302.

      • location - Путь переадресации на том же самом хосте.

    • 'redirect_regex' - осуществляет перенаправление на вычисляемый с помощью регулярного выражения путь, выдавая ответ 3xx. Дополнительные параметры обработчика:

      • http_code - Код ответа 3xx. По умолчанию 302.

      • location_match - Регулярное выражение для выделения места замены в полученном в запросе пути. По умолчанию ".*" - все значение целиком.

      • location_replacement - Значение, подставляемое на обнаруженное с помощью регулярного выражения место. По умолчанию "" - заменить на пустоту.

    • 'error' - отправляет ответ с ошибкой. Дополнительные параметры обработчика:

      • http_code - Код ответа 4xx-6xx. По умолчанию 500.

      • content_type - Тип возвращаемого контента. Заголовок добавляется в ответ только если задано непустое значение параметра 'body'. По умолчанию "application/octet-stream".

      • body - Тело ответа. По умолчанию пустая строка - ответ без тела.

    • 'proxy_http' и 'proxy_websocket' - проксирует http-запросы и websocket-подключения на указанный хостнейм. Если путь завершается слэшом, то перенаправляет все дочерние пути каталога, если нет - только указанный ресурс. Дополнительные параметры обработчика:

      • host - хостнейм назначения,

      • port - порт назначения,

      • tls - режим использования tls. Варианты значений: true, false, "auto" (автоматическое определение на основании порта, по умолчанию), "same" (идентичный исходному запросу).

      • add_path - статический отрезок пути, добавляемый в начало пути перенаправляемого запроса. По умолчанию пусто. Например, для маршрута с path = "/[…​]" значение add_path = "/abc/def" обеспечит перенаправление поступившего запрос страницы "/x/1.txt" на страницу указанного веб-сервера "/abc/def/x/1.txt". Может быть указан шаблон '$path$', тогда вместо него подставляется исходный путь без оконечных слешей.

    • 'proxy_http_ex' и 'proxy_websocket_ex' - проксирует http-запросы или websocket-подключения на хостнейм и порт, указанные в запрашиваемом пути. Путь, заданный в поле 'path', должен содержать привязки "/:domain/" и "/:port/". Если путь завершается слэшом, то перенаправляет все дочерние пути каталога, если нет - только указанный ресурс. Дополнительные параметры обработчика:

      • tls - режим использования tls. Варианты значений: true, false, "auto" (автоматическое определение на основании порта, по умолчанию), "same" (идентичный исходному запросу).

      • add_path - статический отрезок пути, добавляемый в начало пути перенаправляемого запроса. По умолчанию пусто. Например, для маршрута с path = "/[…​]" значение add_path = "/abc/def" обеспечит перенаправление поступившего запрос страницы "/x/1.txt" на страницу указанного веб-сервера "/abc/def/x/1.txt". Может быть указан шаблон '$path$', тогда вместо него подставляется исходный путь без оконечных слешей.

acme_enabled

Флаг включения автоматической выписки сертификата LetsEncrypt. По умолчанию false. Имеет смысл только для доменных имен. Выписка сертификата производится микросервисом mware. Для выписки сертификата используется пакет 'acme.sh'.

Перед запросом к LetsEncrypt производится проверка доступности доменного имени и корректной его адресации на текущий сайт (вторичная проверка производится с помощью внешнего прокси сервера).

Операция пропускается, если выполняется одно из условий:

  • в настройках мастер-домене не задан email для acme;

  • поле certificate_pem сертификат загружен администратором;

  • выписанный ранее сертификат LetsEncrypt еще актуален в ближайшую неделю.

certificate_pem

PEM-содержимое сертификата. Загружается администратором, либо заполняется автоматически после выписки сертификата. Используется при поступлении TLS-запросов. Применение сертификата производится экземплярами микросервиса ws при поступлении запросов на настраиваемое DNS-имя.