×

🌐 Distribution

Nginx · Redis · SSL · Lua

Main → Stream → CDN Architectuur

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).

Verzoekstroom

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

Netwerktopologie

uitwijk

openbaar internet

Gezondheidscontrole & Failover

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)

Tokengegevens

Formaat

Redis-sleutels

Redirect-URL

Ondersteunde formaten en URL-normalisatie

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

Filtro playlist principale Nginx

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)

Componenten

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.