Nginx · Redis · SSL · Lua

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).
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
záloha
verejný internet
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ť)
Formát
URL presmerovania
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
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)
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.