×

🌐 Distribution

Nginx · Redis · SSL · Lua

Architektúra Main → Stream → CDN

Prehľad

Main server slúži len ako orchestrátor — autentifikácia, generovanie tokenov, smerovanie na CDN. Nikdy sa nedotýka streamových dát. Streamy tečú priamo zo stream serverov cez CDN proxy ku klientom. Každá klientska sieť má lokálne CDN pre nízku latenciu. Verejné CDN-Z slúži ako záloha.

Auth, tokeny, orchestrácia. Žiadne streamové dáta.

Validácia tokenov cez Redis, proxy na stream server.

Zdrojové stream servery (HLS/MPEG-TS).

IPTV prehrávač (VLC, STB, mobilná appka).

Priebeh požiadavky

Klient sa autentifikuje (B2C API / play link)

Main vytvorí token v Redise (zdrojová URL, 24h TTL)

Main presmeruje klienta na najlepšie CDN (302)

Klient nasleduje presmerovanie na CDN

CDN validuje token cez Redis Mainu (Net X)

CDN proxy stream zo stream servera ku klientovi

Sieťová topológia

záloha

verejný internet

Kontrola zdravia a failover

CdnRouter kontroluje zdravie CDN každých 30s cez /health endpoint. Ak je najlepšie CDN pre klientov subnet nedostupné, prepne na ďalšie vyhovujúce CDN (zoradené podľa CIDR prefix length, najšpecifickejšie prvé).

Žiadne CDN zdravé → lokálne /cdn/ na Maine (záchranná sieť)

Detaily tokenu

Formát

Redis kľúče

URL presmerovania

Podporované formáty a normalizácia URL

CdnToken automaticky detekuje a spracúva rôzne formáty zdrojových URL. Pre MPEG-TS alebo holé cesty skúša dostupnosť HLS cez HEAD request.

HLS playlist — použitý priamo, master playlist filtrovaný na jeden video variant + všetky audio stopy

Raw MPEG-TS — automaticky konvertovaný na HLS ak server podporuje, inak proxovaný raw s vypnutým bufferingom

Súbor (mp4, m4s, ts, mkv, atď.) — proxovaný priamo, žiadna konverzia

DASH (mpd) — proxovaný priamo

Nginx filter master playlistu

Pre HLS streamy nginx body filter prepíše master playlist (index.m3u8) — ponechá len prvý video variant ale zachová všetky audio/subtitle stopy. Zabráni prehrávačom sťahovať viacero video kvalít naraz.

Pred (zo stream servera)

Po (doručené klientovi)

Komponenty

Generuje 32-znakové hex tokeny, auto-detekuje formát (HLS/MPEG-TS/súbor), normalizuje URL, ukladá v Redise s SETEX (24h TTL).

Nájde najlepšie zdravé CDN podľa IP klienta (CIDR match + health check). Záložný reťazec.

Auto-inštaluje nginx + lua-resty-redis + Redis na CDN serveroch. Injektuje /cdn/ location do main nginx.

DB model: doména, ip_scope (CIDR), redis_host (IP Mainu na Net X), stav zdravia.