Nginx · Redis · SSL · Lua

Pregled
Glavni strežnik deluje samo kot orkestrator — avtentikacija, generiranje žetonov, usmerjanje CDN. Nikoli se ne dotika podatkov toka. Tokovi tečejo neposredno od stream server prek proxy CDN do strank. Vsako odjemalsko omrežje ima lokalni CDN za nizko zakasnitev. Javni CDN-Z služi kot rezerva.
Avtorizacija, žetoni, orkestracija. Ni podatkov o toku.
Validacija žetonov prek Redisa, proxy za stream server.
Strežniki tokov virov (HLS/MPEG-TS).
IPTV predvajalnik (VLC, STB, mobilna aplikacija).
Odjemalec preverja pristnost (API B2C / povezava za predvajanje)
Glavna ustvari žeton v Redis (izvorna URL, 24h TTL)
Main preusmeri stranko na najboljši CDN (302)
Odjemalec sledi preusmeritvi na CDN
CDN potrdi žeton prek glavnega Redisa (Net X)
CDN proxy tok iz stream server do odjemalca
nadomestni
javni internet
CdnRouter preverja stanje CDN vsakih 30 s prek končne točke /health. Če najboljši CDN za odjemalčevo podomrežje ne deluje, se vrne na naslednji ujemajoči se CDN (razvrščen po dolžini predpone CIDR, najprej najbolj specifičen).
Ni zdravega CDN → lokalno /cdn/ na glavnem (varnostna mreža)
Oblika
URL preusmeritve
CdnToken samodejno zazna in obravnava različne izvorne oblike URL-jev. Za MPEG-TS ali gole poti pretoka preišče strežnik za razpoložljivost HLS prek zahteve HEAD.
HLS seznam predvajanja — direktno uporabljen, glavni seznam predvajanja filtriran na eno video različico + vse zvočne sledi
Neobdelani MPEG-TS — samodejno pretvorjen v HLS, če strežnik to podpira (stream server to vedno podpira), v nasprotnem primeru proksiran v surovem stanju z izklopljenim medpomnilnikom
Datoteka (mp4, m4s, ts, mkv itd.) — proksirana neposredno takšna, kot je, brez pretvorbe
DASH (mpd) — posredovano neposredno kot je
Za HLS tokove nginx filter telesa prepiše glavno igralno listo (index.m3u8), da obdrži samo prvo video različico med ohranjanjem vseh zvočnih/podnaslova sledi. To preprečuje, da bi igralci prenašali več kvalitete hkrati.
Prej (od stream server)
Po (dostavljeno stranki)
Generira 32-mestne šestnajstiške žetone, samodejno zazna format (HLS/MPEG-TS/datoteka), normalizira URL, shrani v Redis s SETEX (24-urni TTL).
Poišče najboljši zdrav CDN glede na IP odjemalca (ujemanje CIDR + preverjanje stanja). Nadomestna veriga.
Samodejno namesti nginx + lua-resty-redis + Redis na strežnike CDN. Vstavi lokacijo /cdn/ v glavni nginx.
Model DB: domena, ip_scope (CIDR), redis_host (glavni IP na Net X), zdravstveno stanje.