×

🌐 Distribution

Nginx · Redis · SSL · Lua

Architektura Main → Stream → CDN

Przegląd

Serwer Main działa tylko jako orkiestrator — uwierzytelnianie, generowanie tokenów, routing CDN. Nigdy nie przetwarza danych strumieniowych. Strumienie płyną bezpośrednio z stream server przez proxy CDN do klientów. Każda sieć klienta ma lokalny CDN dla niskiego opóźnienia. Publiczny CDN-Z służy jako fallback.

Uwierzytelnianie, tokeny, orkiestracja. Brak danych strumieniowych.

Walidacja tokena przez Redis, proxy do stream server.

Serwery strumienia źródłowego (HLS/MPEG-TS).

Odtwarzacz IPTV (VLC, STB, aplikacja mobilna).

Przepływ Żądań

Klient uwierzytelnia się (API B2C / link play)

Main tworzy token w Redis (źródłowy URL, 24h TTL)

Main przekierowuje klienta do najlepszego CDN (302)

Klient podąża za przekierowaniem do CDN

CDN waliduje token przez Redis Main (Sieć X)

CDN serwuje strumień z stream server do klienta

Topologia Sieci

fallback

publiczny internet

Kontrola zdrowotności i przełączanie awaryjne

CdnRouter sprawdza stan CDN co 30s przez punkt końcowy /health. Jeśli najlepszy CDN dla podsieci klienta jest niedostępny, następuje przełączenie na kolejny pasujący CDN (posortowane według długości prefiksu CIDR, najbardziej specyficzne jako pierwsze).

Brak zdrowego CDN → lokalny /cdn/ na Main (zabezpieczenie)

Szczegóły Tokena

Format

Klucze Redis

URL przekierowania

Obsługiwane formaty i normalizacja URL

CdnToken automatycznie wykrywa i obsługuje różne formaty URL źródłowego. Dla MPEG-TS lub gołych ścieżek strumieniowych, sonduje serwer pod kątem dostępności HLS za pomocą żądania HEAD.

Playlista HLS — używana bezpośrednio, master playlista filtrowana do jednego wariantu wideo + wszystkie ścieżki audio

Czysty MPEG-TS — automatycznie konwertowany do HLS, jeśli serwer to obsługuje (stream server zawsze obsługuje), w przeciwnym razie przekazywany surowo z wyłączonym buforowaniem

Plik (mp4, m4s, ts, mkv, itp.) — przekazywany bezpośrednio bez zmian, bez konwersji

DASH (mpd) — przekazywany bezpośrednio bez zmian

Filtr Playlisty Głównej Nginx Master

W przypadku strumieni HLS filtr treści nginx przepisuje master playlistę (index.m3u8), aby zachować tylko pierwszy wariant wideo, jednocześnie zachowując wszystkie ścieżki audio/napisów. Zapobiega to odtwarzaczom z pobraniem wielu jakości wideo jednocześnie.

Przed (z stream server)

Po (dostarczane do klienta)

Komponenty

Generuje 32-znakowe tokeny w formacie heksadecymalnym, automatycznie wykrywa format (HLS/MPEG-TS/plik), normalizuje URL, przechowuje w Redis z SETEX (TTL 24h).

Znajduje najlepszy zdrowy CDN na podstawie IP klienta (dopasowanie CIDR + sprawdzenie stanu). Łańcuch awaryjny.

Automatycznie instaluje nginx + lua-resty-redis + Redis na serwerach CDN. Wstrzykuje lokalizację /cdn/ do głównego nginx.

Model DB: domena, ip_scope (CIDR), redis_host (Główny IP w Sieci X), status zdrowia.