×

🌐 Distribution

Nginx · Redis · SSL · Lua

Architettura Main → Stream → CDN

Panoramica

Il server principale agisce solo come orchestratore — autenticazione, generazione token, routing CDN

Autenticazione, token, orchestrazione

Validazione token tramite Redis, proxy verso stream server

Server stream sorgente (HLS/MPEG-TS)

Client IPTV (VLC, STB, app mobile)

Flusso richieste

Il client si autentica (API B2C / link play)

Il main crea il token in Redis (URL sorgente, TTL 24h)

Il main reindirizza il client al CDN migliore (302)

Il client segue il reindirizzamento verso CDN

Il CDN convalida il token tramite Redis del main (Net X)

Il CDN fa da proxy allo stream dal stream server al client

Topologia di rete

fallback

internet pubblico

Controllo integrità e failover

CdnRouter verifica la salute del CDN ogni 30s tramite l'endpoint /health. Se il CDN migliore per il subnet del cliente è offline, passa al CDN successivo (ordinato per lunghezza del prefisso CIDR, più specifico per primo).

Nessun CDN sano -> /cdn/ locale su Main (rete di sicurezza)

Dettagli token

Formato

Chiavi Redis

URL di reindirizzamento

Formati supportati e normalizzazione URL

CdnToken rileva automaticamente e gestisce diversi formati URL sorgente

Playlist HLS (m3u8) — proxy e riscrittura della variante video (prima pista video)

MPEG-TS (ts) — proxy diretto, nessuna conversione

File (mp4, m4s, ts, mkv, ecc.) — proxy diretto così com'è, nessuna conversione

DASH (mpd) — proxy diretto

Filtro playlist principale Nginx

Per gli stream HLS, il body filter di nginx riscrive la playlist master (index.m3u8) mantenendo solo la prima variante video preservando tutti i track audio/sottotitolo. Questo impedisce ai player di scaricare simultaneamente multiple qualità video.

Prima (da stream server)

Dopo (erogato al client)

Componenti

Genera token esadecimali da 32 caratteri, rileva automaticamente il formato (HLS/MPEG-TS/file), normalizza l'URL, memorizza in Redis con SETSE (TTL 24h).

Trova il CDN più sano per l'IP del cliente (corrispondenza CIDR + verifica stato). Catena di fallback.

Installazione automatica di nginx + lua-resty-redis + Redis sui server CDN. Inietta la posizione /cdn/ nel nginx principale.

Modello DB: dominio, ip_scope (CIDR), redis_host (IP principale su Net X), stato di salute.