×

🌐 Distribution

Nginx · Redis · SSL · Lua

Arquitetura Principal → Stream → CDN

Visão Geral

O servidor principal atua apenas como orquestrador — autenticação, geração de tokens, roteamento de CDN. Ele nunca toca nos dados do stream. Os streams fluem diretamente do stream server através dos proxies de CDN até os clientes. Cada rede de cliente possui uma CDN local para baixa latência. Uma CDN-Z pública serve como fallback.

Autenticação, tokens, orquestração. Sem dados de stream.

Validação de token via Redis, proxy para stream server.

Servidores de stream de origem (HLS/MPEG-TS).

Reprodutor IPTV (VLC, STB, aplicativo móvel).

Fluxo de Solicitação

Cliente autentica (API B2C / link de reprodução)

Principal cria token no Redis (URL de origem, TTL de 24h)

Principal redireciona cliente para a melhor CDN (302)

Cliente segue o redirecionamento para a CDN

CDN valida token via Redis do Principal (Net X)

CDN proxy do stream do stream server para o cliente

Topologia de Rede

fallback

internet pública

Verificação de Saúde e Failover

O CdnRouter verifica a saúde da CDN a cada 30s por meio do endpoint /health. Se a melhor CDN para a sub-rede do cliente estiver inativa, ele faz fallback para a próxima CDN correspondente (ordenada pelo comprimento do prefixo CIDR, mais específica primeiro).

Nenhuma CDN saudável → /cdn/ local no Principal (rede de segurança)

Detalhes do Token

Formato

Chaves Redis

URL de Redirecionamento

Formatos Suportados e Normalização de URL

CdnToken detecta automaticamente e lida com diferentes formatos de URL de origem. Para MPEG-TS ou caminhos de stream brutos, ele verifica a disponibilidade de HLS no servidor por meio de solicitação HEAD.

Playlist HLS — usada diretamente, playlist mestre filtrada para uma única variante de vídeo + todas as faixas de áudio

MPEG-TS bruto — convertido automaticamente para HLS se o servidor suportar (stream server sempre suporta), caso contrário, proxy bruto com buffer desativado

Arquivo (mp4, m4s, ts, mkv, etc.) — proxy direto como está, sem conversão

DASH (mpd) — proxy direto como está

Filtro de Playlist Mestre do Nginx

Para streams HLS, o filtro de corpo do nginx reescreve a playlist mestre (index.m3u8) para manter apenas a primeira variante de vídeo, preservando todas as faixas de áudio e legendas. Isso impede que os players baixem múltiplas qualidades de vídeo simultaneamente.

Antes (do stream server)

Após (entregue ao cliente)

Componentes

Gera tokens hexadecimais de 32 caracteres, detecta automaticamente o formato (HLS/MPEG-TS/arquivo), normaliza a URL e armazena no Redis com SETEX (TTL de 24h).

Encontra a melhor CDN saudável com base no IP do cliente (correspondência CIDR + verificação de saúde). Cadeia de fallback.

Instala automaticamente nginx + lua-resty-redis + Redis nos servidores CDN. Injeta o local /cdn/ no nginx principal.

Modelo de banco de dados: domínio, ip_scope (CIDR), redis_host (IP principal na Rede X), status de saúde.