Контент на узлах доступен только по подписанному URL. Ниже — как сформировать подпись и что вернёт узел без неё.
Каждый объект в каталоге /media/ отдаётся только при действительной подписи. Подпись формирует ваш бэкенд по секретному ключу проекта и передаёт зрителю в параметрах ссылки. Узел проверяет подпись и срок действия, и только потом отдаёт сегменты.
| Параметр | Описание |
|---|---|
exp | Unix-время, до которого ссылка действительна |
sig | MD5 от exp, пути и секрета проекта, в base64url без выравнивания |
path = "/media/lesson-42/master.m3u8"
exp = 1789200000
sig = base64url(MD5(exp + ":" + path + ":" + secret))
url = "https://nabstream.ru" + path
+ "?exp=" + exp
+ "&sig=" + sig
Подпись считается для каждого объекта отдельно. Плейлисты отдаются с уже подставленными подписанными ссылками на дорожки и сегменты, поэтому плееру достаточно подписанной ссылки на мастер-плейлист.
Запрос к /media/… без действительной подписи получает 403:
GET /media/lesson-42/master.m3u8
HTTP/2 403
{"error":"signature_required","node":"edge-msk-01"}
Если срок действия истёк, узел отвечает отдельным кодом ошибки:
GET /media/lesson-42/master.m3u8?exp=1700000000&sig=…
HTTP/1.1 403 Forbidden
Content-Type: application/json
{"error":"signature_expired","node":"edge-msk-01"}
Служебный эндпоинт /status возвращает состояние edge-узла в формате JSON — его использует страница статуса сети.
GET /status
HTTP/2 200
{"node":"edge-msk-01","role":"edge","status":"operational"}