×

🌐 Distribution

Nginx · Redis · SSL · Lua

Hoved → Stream → CDN-arkitektur

Oversigt

Hovedserveren fungerer kun som orkestrator — autentificering, token-generering, CDN-routning. Den rører aldrig streamdata. Streams flytter direkte fra stream server gennem CDN-proxys til klienter. Hvert klientnetværk har et lokalt CDN til lav forsinkelse. Et offentligt CDN-Z fungerer som fallback.

Autentificering, tokens, orkestrering. Ingen streamdata.

Tokenvalidering via Redis, proxy til stream server.

Kilde-streamservere (HLS/MPEG-TS).

IPTV-spiller (VLC, STB, mobilapp).

Anmodningsflow

Klient autentificerer (B2C-API / play-link)

Hoved opretter token i Redis (kilde-URL, 24t TTL)

Hoved videresender klient til bedste CDN (302)

Klient følger omdirigering til CDN

CDN validerer token via hovedets Redis (net X)

CDN proxyer stream fra stream server til klient

Netværks-topologi

fallback

offentligt internet

Sundhedscheck & nedtrapning

CdnRouter tjekker CDN-sundhed hvert 30. sekund via /health-endpoint. Hvis det bedste CDN for klientens subnet er nede, falder det tilbage til næste matchende CDN ( sorteret efter CIDR-præfixlængde, mest specifik først).

Intet CDN sundt → lokal /cdn/ på hoved (sikkerhedsnet)

Token-detaljer

Format

Redis-nøgler

Omdirigerings-URL

Understøttede formater & URL-normalisering

CdnToken detekterer automatisk og håndterer forskellige kilde-URL-formater. For MPEG-TS eller rå stream-stier probinges serveren for HLS-tilgængelighed via HEAD-anmodning.

HLS-playlist — bruges direkte, master-playlist filtreret til enkelt videovariant + alle lydsporene

Rå MPEG-TS — autoconverteret til HLS, hvis serveren understøtter det (stream server gør det altid), ellers proxys rå med puffring slukket

Fil (mp4, m4s, ts, mkv osv.) — proxys direkte som det er, ingen konvertering

DASH (mpd) — proxys direkte som det er

Nginx master-playlistfilter

For HLS-streams omskriver nginx body-filter master-playlisten (index.m3u8) til kun at beholde den første videovariant, mens alle lyd-/undertitelssporene bevares. Dette forhindrer spillere i at downloade flere videokvaliteter samtidigt.

Før (fra stream server)

Efter (leveret til klient)

Komponenter

Genererer 32-tegn hex-tokens, autogendækker format (HLS/MPEG-TS/fil), normaliserer URL, gemmer i Redis med SETEX (24t TTL).

Finder det bedste sunde CDN ved klient-IP (CIDR-match + sundhedscheck). Nedtrapningskæde.

Autoinstallerer nginx + lua-resty-redis + Redis på CDN-servere. Indsprøjter /cdn/placering i hovednginx.

DB-model: domæne, ip_scope (CIDR), redis_host (Hoved-IP på net X), helbredelsesstatus.