Nginx · Redis · SSL · Lua

Descripción general
El servidor principal actúa solo como orquestador — autenticación, generación de tokens, enrutamiento de CDN. Nunca toca los datos de transmisión. Las transmisiones fluyen directamente desde stream server a través de proxies CDN a los clientes. Cada red de cliente tiene una CDN local para baja latencia. Una CDN-Z pública sirve como respaldo.
Autenticación, tokens, orquestación. Sin datos de transmisión.
Validación de token a través de Redis, proxy a stream server.
Servidores de transmisión de origen (HLS/MPEG-TS).
Reproductor IPTV (VLC, STB, aplicación móvil).
El cliente se autentic (API B2C / enlace de reproducción)
Main crea token en Redis (URL de fuente, TTL 24h)
Principal redirige al cliente a la mejor CDN (302)
El cliente sigue la redirección a la CDN
CDN valida el token a través de Redis de Principal (Red X)
CDN hace proxy de la transmisión desde stream server al cliente
respaldo
internet público
CdnRouter verifica la salud de la CDN cada 30s a través del punto final /health. Si la mejor CDN para la subred del cliente está caida, se reduce a la siguiente CDN coincidente (ordenada por longitud de prefijo CIDR, más específica primero).
Sin CDN sana → /cdn/ local en Principal (red de seguridad)
Formato
URL de redirección
CdnToken detecta y maneja automáticamente diferentes formatos de URL de origen. Para MPEG-TS o rutas de transmisión desnudas, consulta al servidor la disponibilidad de HLS a través de la solicitud HEAD.
Lista HLS — se usa directamente, lista maestra filtrada a una sola variante de video + todas las pistas de audio
MPEG-TS crudo — se convierte automáticamente a HLS si el servidor lo soporta (stream server siempre lo hace), de lo contrario se hace proxy crudo con desactivación de búfer
Archivo (mp4, m4s, ts, mkv, etc.) — proxy directo tal como está, sin conversión
DASH (mpd) — proxy directo tal como está
Para transmisiones HLS, el filtro de cuerpo de nginx reescribe la lista maestra (index.m3u8) para mantener solo la primera variante de video mientras preserva todas las pistas de audio/subtítulos. Esto evita que los clientes descarguen múltiples calidades de video simultáneamente.
Antes (desde stream server)
Después (entregado al cliente)
Genera tokens hex de 32 caracteres, detecta automáticamente el formato (HLS/MPEG-TS/archivo), normaliza la URL, almacena en Redis con SETEX (TTL de 24h).
Encuentra la CDN sana mejor para la IP del cliente (coincidencia CIDR + verificación de salud). Cadena de respaldo.
Instala automáticamente nginx + lua-resty-redis + Redis en servidores CDN. Inyecta la ubicación /cdn/ en nginx principal.
Modelo de base de datos: dominio, ip_scope (CIDR), redis_host (IP principal en Red X), estado de salud.