Nginx · Redis · SSL · Lua

Översikt
Huvudservern agerar endast som orkestrerare — autentisering, token-generering, CDN-ruttning. Den rör aldrig strömdatan. Strömmar flödar direkt från stream server genom CDN-proxyservrar till klienter. Varje klientnätverk har en lokal CDN för låg latens. En offentlig CDN-Z fungerar som failback.
Auth, tokens, orchestration. Nej stream data.
Token-validering via Redis, proxy till stream server.
Källa stream servers (HLS/MPEG-TS).
IPTV-spelare (VLC, STB, mobilapp).
Klienten autentiserar (B2C API / spel-länk)
Huvudservern skapar token i Redis (käll-URL, 24h TTL)
Huvudservern omdirigerar klienten till bästa CDN (302)
Klienten följer omdirigeringen till CDN
CDN validerar token via Huvudserverns Redis (Nät X)
CDN proxyar strömmen från stream server till klienten
failback
publika internet
CdnRouter kontrollerar CDN-hälsan var 30:e sekund via /health-slutpunkten. Om den bästa CDN:n för klientens undernät är nere, faller den tillbaka till nästa matchande CDN (sorterad efter CIDR-prefixlängd, mest specifik först).
Nej CDN healthy → local /cdn/ on Main (safety net)
CDN-autentiseringstoken-format
Omdirigerings-URL
CdnToken upptäcker och hanterar automatiskt olika käll-URL-format. För MPEG-TS eller blotta strömvägar undersöker den servern för HLS-tillgänglighet via en HEAD-begäran.
HLS-mapp — används direkt, huvudmappen filtreras till en enda videovariant + alla ljudspår
Rå MPEG-TS — konverteras automatiskt till HLS om servern stöder det (stream server gör det alltid), annars proxyas rådata med buffring avstängd
Fil (mp4, m4s, ts, mkv, etc.) — proxied directly as-is, no conversion
DASH (mpd) — proxyas direkt som det är
För HLS-strömmar omskriver nginx body filter huvudmappen (index.m3u8) för att behålla endast den första videovarianten samtidigt som alla ljud- och undertextspår bevaras. Detta förhindrar att spelare laddar ner flera videokvaliteter samtidigt.
Före (från stream server)
Efter (levereras till klient)
Genererar 32-teckens hex-tokens, upptäcker automatiskt format (HLS/MPEG-TS/fil), normaliserar URL:en och lagrar i Redis med SETEX (24 h TTL).
Hittar bästa friska CDN baserat på klientens IP (CIDR-matchning + hälsokontroll). Nedfallskedja.
Installerar automatiskt nginx + lua-resty-redis + Redis på CDN-servrar. Infogar /cdn/-platsen i huvudnginx.
DB-modell: domän, ip_scope (CIDR), redis_host (Huvud-IP på Nät X), hälsostatus.