Nginx · Redis · SSL · Lua

Apžvalga
Main serveris acts as orchestrator only — authentication, žeton generavimas, CDN routing. It never touches srautas duomenys. Srautai flow directly from stream server through CDN proxies to clients. Each klientas tinklas has a local CDN for low latency. A public CDN-Z serves as failover.
Auth, tokens, orchestration. No srautas duomenys.
Žeton validation via Redis, proxy to stream server.
Šaltinis srautas servers (HLS/MPEG-TS).
IPTV grotuvas (VLC, STB, mobilioji programėlė).
Klientas authenticates (B2C API / groti link)
Main creates žeton in Redis (šaltinis URL, 24h TTL)
Main redirects klientas to best CDN (302)
Klientas follows redirect to CDN
CDN validates žeton via Main's Redis (Net X)
CDN proxies srautas from stream server to klientas
failover
publikinis internetas
CdnRouter checks CDN sveikata every 30s via /health galinis taškas. If the best CDN for klientas's subnet is down, it falls back to the kitas matching CDN (sorted by CIDR prefix length, most specific first).
Jei CDN neveikia → vietinis /cdn/ pagrindiniame serveryje (saugumo tinklas)
Formatas
Peradresavimo URL
CdnToken automatically detects and handles different šaltinis URL formats. For MPEG-TS or bare srautas paths, it probes the serveris for HLS availability via HEAD prašymas.
HLS kūrinių sąrašas — used directly, master kūrinių sąrašas filtered to single vaizdo įrašas variant + visi garsas tracks
Raw MPEG-TS — auto-converted to HLS if serveris supports it (stream server always does), otherwise proxied raw with buffering off
Failas (mp4, m4s, ts, mkv, etc.) — proxied directly as-is, no conversion
DASH (mpd) – tiesiogiai perleidžiamas kaip yra
For HLS srautai, nginx kūnas filtras rewrites the master kūrinių sąrašas (indeksas.m3u8) to keep only the first vaizdo įrašas variant while preserving visi garsas/subtitle tracks. This prevents players from downloading multiple vaizdo įrašas qualities simultaneously.
Prieš (iš stream server)
After (delivered to klientas)
Generates 32-char hex tokens, auto-detects formatas (HLS/MPEG-TS/failas), normalizes URL, stores in Redis with SETEX (24h TTL).
Finds best healthy CDN by klientas IP (CIDR match + health patikrinti). Failover chain.
Automatiškai įdiegia nginx + lua-resty-redis + Redis CDN serveriuose. Įterpia /cdn/ lokaciją į pagrindinį nginx konfigūraciją.
DB model: sritis, ip_scope (CIDR), redis_host (Main IP on Net X), health būsena.