UCS Поддомены с подстановочными знаками интеграции для каждой строки¶
Эта функция присваивает каждому клиенту значение стабильный, уникальный поддомен балансировщика нагрузки, основанный на их идентификаторе строки (например, строка 10 → 10.example.com) при построении перенаправления потока.
Что здесь означает UCS? XC_VM только выдает имя хоста
{line_id}.<zone>. "UCS" относится к восходящая/внешняя система — ваш DNS, CDN или пограничный прокси—сервер, который использует эти данные для каждой строки имена хостов для маршрутизации или применения политики для каждой строки. Панель сама по себе не реализует UCS; она передает ее.
Обзор¶
When a load-balancer (LB) server uses a wildcard domain and Serve Random IP / Domain is enabled, XC_VM replaces the wildcard. prefix with the authenticated line ID before redirecting the client.
| Идентификатор строки | Домен LB (настроен) | Перенаправление домена |
|---|---|---|
| 10 | wildcard.example.com |
10.example.com |
| 42 | wildcard.lb1.com |
42.lb1.com |
Каждая строка получает стабильный поддомен. UCS (или вышестоящий DNS/прокси-сервер) может перенаправлять *.example.com на правильный сервер или применять политики для каждой строки.
Требования¶
- Сервер балансировки нагрузки (не основной сервер), по крайней мере, с одним доменом, настроенным в соответствии с Домены и IP-адреса.
- Обслуживать случайный IP / домен включен на этом сервере (флажок
random_ipна странице редактирования сервера). - Запись в домене, начинающаяся с
wildcard.(например,wildcard.example.com). - DNS: подстановочная запись для базовой зоны (например,
*.example.com), указывающая на LB или вашу границу UCS. - TLS (при обслуживании по протоколу HTTPS): подстановочный сертификат
*.example.com. Каждая строка преобразуется в другой хост (10.example.com,42.example.com, ...), таким образом, сертификат для каждого хоста не будет работать без подстановочный знак означает, что эти клиенты получают ошибки TLS. Это самая распространенная ошибка при развертывании.
Установка¶
- Откройте Серверы → Редактировать на целевом сервере LB.
- В поле Домены и IP-адреса добавьте
wildcard.example.com(используйте свою реальную зону). - Включить Обслуживать случайный IP / домен.
- Сохраните сервер.
- Убедитесь, что DNS разрешает
{line_id}.example.comдля любого введенного вами идентификатора строки (wildcard DNS или UCS automation).
Когда клиент проходит аутентификацию с помощью auth.php, XC_VM считывает идентификатор строки из $rUserInfo['id'] и передает его в конструктор URL-адресов перенаправления.
Когда Это применимо¶
The substitution runs only when all of the following are true:
- Запрос аутентифицирован, и доступен идентификатор строки.
- Обслуживать случайный IP / домен включено для выбранного LB.
- Случайно выбранный домен из списка доменов сервера содержит подстроку
wildcard..
Если клиент подключился, используя соответствующий заголовок Host, существующий хост сохраняется, а подстановочный знак пропускается.
Пример потока¶
- Домены сервера LB:
wildcard.example.com,lb2.example.com - Обслуживать случайный IP / домен: включено
- Client line ID:
10 - Auth выбирает
wildcard.example.comиз списка доменов - URL-адрес узла перенаправления становится
10.example.com
Сложные случаи и подводные камни¶
- Отсутствующий / неправильный подстановочный DNS-код — если
*.zoneне удается разрешить, клиент получает неразрешимую проблему. хост и поток завершаются сбоем. Проверьте с помощьюdig 999.example.comперед выдачей строк. - Несколько доменов на LB — "Обслуживать случайный IP / домен" выбирает один домен случайным образом. Если
pick - это запись, не содержащая
wildcard., никакой замены не происходит, и клиент получает этот простой хост. Следите за тем, чтобы список доменов LB был единообразным (все с подстановочными знаками или разбирайтесь в их сочетаниях). - Меняется только метка хоста — при замене заменяется только сегмент
wildcard.; URL-адрес схема (http/https) и путь не изменяются, поэтому развертывание HTTPS остается HTTPS (отсюда и сертификат требование, приведенное выше). Host-пропуск матча — если клиент уже подключился с использованием хоста, соответствующего требованиям LB сконфигурированный домен, существующий хост сохраняется, а замена пропускается (например, клиент, который достигнутыйwildcard.example.comнепосредственно сохраняет его, а не становится10.example.com).
Реализация¶
Логика живет в StreamRedirector::getStreamingURL():
// line_id : 10 => wildcard.lb1.com => 10.lb1.com
if ($rUserID && strpos($rDomain, 'wildcard.') !== false) {
$rDomain = str_replace('wildcard.', $rUserID . '.', $rDomain);
}
Вызывается из Public/stream/auth.php с помощью $rUserID = $rUserInfo['id'] для прямых, VOD, timeshift и связанных с ними перенаправлений.
Записи¶
- Используйте буквальный префикс
wildcard.в строке домена; заменяется только этот сегмент. - Идентификатор строки - это внутренний идентификатор таблицы линии (
users.idв streaming auth), а не имя пользователя. - Подстановка подстановочных знаков применяется только к URL-адресам перенаправления LB; она не изменяет имена плейлистов или хостов API, если только эти пути также не содержат
getStreamingURL()с идентификатором строки. - Безопасность: идентификаторы строк становятся общедоступными в именах хостов (
10.example.com), поэтому поддомен это поверхность перечисления — она показывает, что идентификаторы строк являются последовательными целыми числами. Это не секрет; не полагайтесь на поддомен для контроля доступа (auth по-прежнему выполняется вauth.php).
Связанные файлы¶
| Файл | Роль |
|---|---|
src/Streaming/Delivery/StreamRedirector.php |
getStreamingURL() подстановка подстановочных знаков |
src/Public/stream/auth.php |
Вызывает конструктор перенаправления с использованием идентификатора строки |