Nginx · Redis · SSL · Lua

Overzicht
De Main-server fungeert alleen als orkestrator — authenticatie, tokengeneratie, CDN-routing. Het raakt nooit streamgegevens. Streams stromen direct van stream server via CDN-proxies naar clients. Elk clientnetwerk heeft een lokale CDN voor lage latentie. Een openbare CDN-Z fungeert als fallback.
Authenticatie, tokens, orkestratie. Geen streamgegevens.
Tokenvalidatie via Redis, proxy naar stream server.
Bron-streamservers (HLS/MPEG-TS).
IPTV-speler (VLC, STB, mobiele app).
Client authenticeert (B2C API / afspeelkoppeling)
Main maakt token aan in Redis (bron-URL, TTL van 24 uur)
Main stuurt client door naar de beste CDN (302)
Client volgt redirect naar CDN
CDN valideert token via Main's Redis (Net X)
CDN proxyt stream van stream server naar client
uitwijk
openbaar internet
CdnRouter controleert de CDN-health elke 30 seconden via het /health-eindpunt. Als de beste CDN voor het subnet van de client uitvalt, wordt er teruggevallen op de volgende overeenkomende CDN (gesorteerd op CIDR-prefixlengte, meest specifiek eerst).
Geen gezonde CDN → lokaal /cdn/ op Main (veilingsnet)
Formaat
Redirect-URL
CdnToken detecteert en verwerkt automatisch verschillende bron-URL-formaten. Voor MPEG-TS of kale streampaden probeert het de server op HLS-beschikbaarheid via een HEAD-verzoek.
HLS-playlist — direct gebruikt, master-playlist gefilterd naar één videovariant + alle audiosporen
Ruwe MPEG-TS — automatisch geconverteerd naar HLS als de server dit ondersteunt (stream server doet dit altijd), anders ruw doorgestuurd met buffering uitgeschakeld
Bestand (mp4, m4s, ts, mkv, enz.) — direct doorgestuurd zoals het is, geen conversie
DASH (mpd) — direct doorgestuurd zoals het is
Voor HLS-streams herschrijft de nginx body filter de master-playlist (index.m3u8) zodat alleen de eerste videovariant wordt behouden, terwijl alle audio- en ondertitelingsporen behouden blijven. Dit voorkomt dat spelers meerdere videokwaliteiten tegelijk downloaden.
Voor (vanaf stream server)
Naar (geleverd aan client)
Genereert hex-tokens van 32 tekens, detecteert automatisch het formaat (HLS/MPEG-TS/bestand), normaliseert de URL en slaat deze op in Redis met SETEX (TTL van 24 uur).
Vindt de gezondste CDN op basis van client-IP (CIDR-overeenkomst + health check). Fallback-reeks.
Installeert automatisch nginx + lua-resty-redis + Redis op CDN-servers. Voegt de /cdn/-locatie toe aan de hoofdnginx.
DB-model: domein, ip_scope (CIDR), redis_host (hoofd-IP op Net X), gezondheidsstatus.