×

🌐 Distribution

Nginx · Redis · SSL · Lua

Huvud → Ström → CDN-arkitektur

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

Begärandeflöde

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

Nätverk Topology

failback

publika internet

Hälsokontroll & Failover

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)

Token Detaljer

CDN-autentiseringstoken-format

Redis-nycklar

Omdirigerings-URL

Stödda format & URL-normalisering

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

Nginx Master Spellista Filtrera

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)

Komponenter

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.