×

🌐 Distribution

Nginx · Redis · SSL · Lua

主→流→CDN架构

概述

主服务器仅充当协调器 - 身份验证、令牌生成、CDN 路由。

身份验证、令牌、编排。

通过 Redis 进行令牌验证,代理至 stream server。

源流服务器 (HLS/MPEG-TS)。

IPTV 播放器(VLC、STB、移动应用程序)。

请求流程

客户端身份验证(B2C API/播放链接)

Main 在 Redis 中创建令牌(源 URL,24h TTL)

主要将客户端重定向到最佳 CDN (302)

客户端重定向到 CDN

CDN 通过 Main 的 Redis (Net X) 验证令牌

CDN 代理从 stream server 流式传输到客户端

网络拓扑

倒退

公共互联网

健康检查和故障转移

CdnRouter 通过 /health 端点每 30 秒检查一次 CDN 运行状况。

没有 CDN 健康 → Main(安全网)上的本地 /cdn/

代币详情

格式

Redis 密钥

重定向网址

支持的格式和 URL 规范化

CdnToken 自动检测并处理不同的源 URL 格式。

HLS 播放列表 — 直接使用,主播放列表过滤为单个视频变体 + 所有音轨

原始 MPEG-TS — 如果服务器支持(stream server 总是支持),则自动转换为 HLS,否则通过缓冲关闭来代理原始数据

文件(mp4、m4s、ts、mkv 等)——直接按原样代理,无需转换

DASH (mpd) — 按原样直接代理

Nginx 主播放列表过滤器

对于 HLS 流,nginx 主体过滤器重写主播放列表 (index.m3u8) 以仅保留第一个视频变体,同时保留所有音频/字幕轨道。

之前(来自 stream server)

之后(交付给客户)

成分

生成 32 字符的十六进制令牌,自动检测格式(HLS/MPEG-TS/文件),规范化 URL,使用 SETEX(24h TTL)存储在 Redis 中。

按客户端 IP 查找最佳健康 CDN(CIDR 匹配 + 健康检查)。

在 CDN 服务器上自动安装 nginx + lua-resty-redis + Redis。

数据库模型:域、ip_scope (CIDR)、redis_host(Net X 上的主 IP)、健康状态。