1.
准备工作与架构概览
说明:确认直播流程(采集→编码→推流→回源→CDN分发→播放器)。小分段:a) 确认推流协议(RTMP/RTSP/HTTP-FLV/HLS);b) 确认是否用专门的Origin服务器(如Nginx/OBS/Wowza);c) 选择CDN厂商并准备账号与域名。
2.
在CDN控制台新建直播加速域名
步骤:a) 登录CDN控制台→新建加速域名→填写域名(如 cdn.example.com);b) 选择业务类型为“直播/流媒体”;c) 选择加速模式(直播点播分离或通用),保存并获取CNAME。
3.
DNS解析配置
步骤:a) 在域名服务商处添加CNAME记录,主机名填cdn域名,指向CDN提供的cname地址;b) 等待生效(通常几分钟到数小时);c) 用dig或nslookup检查解析是否到CDN。
4.
配置回源(Origin)地址与Host头
步骤:a) 在CDN域名配置页填写回源地址(IP或域名,建议填写内网IP或独立域名);b) 设置回源Host为你实际的Origin主机名,确保Origin能识别Host并返回正确资源;c) 如使用HTTPS回源,上传或信任证书并开启回源HTTPS。
5.
编码器与推流端配置(ffmpeg/OBS示例)
操作:a) 推荐使用ffmpeg推RTMP到Origin:ffmpeg -re -i input -c:v libx264 -preset veryfast -b:v 2500k -c:a aac -b:a 128k -f flv rtmp://origin/live/streamKey;b) OBS配置输出分辨率和码率,推流地址使用Origin RTMP地址;c) 若CDN支持RTMP直推,可将推流直接到CDN的推流域名。
6.
配置Nginx作为Origin的关键参数
示例与说明:a) 开启HTTP长连接与大并发:worker_processes auto; worker_connections 10240; b) 对于HLS,location /live/ { proxy_buffering off; proxy_set_header Host $host; proxy_pass http://backend; } c) 优化proxy_buffer_size、proxy_buffers、sendfile on; tcp_nopush on; 以减少延迟与磁盘IO。
7.
设置CDN缓存规则(针对m3u8/ts/mp4)
细则:a) 将.m3u8设置短TTL(例如10s),并允许回源校验;b) .ts分片可设置中等TTL(30-60s)以兼顾命中率和实时性;c) 对于点播mp4可设置长TTL并开启压缩和分块传输。
8.
支持范围请求与断点续传
配置:a) 在Origin上确保Accept-Ranges: bytes头由服务器返回(Nginx默认支持);b) CDN开启Range回源或直接转发Range请求;c) 播放器可利用Range请求优化拖动与缓存命中。
9.
跨域与安全(CORS、鉴权、防盗链)
步骤:a) 在Origin或CDN添加Access-Control-Allow-Origin: *(或指定域名);b) 开启Token鉴权或签名URL以防盗链;c) 配置防刷限速、黑白名单和IP访问控制。
10.
证书与HTTPS配置
操作:a) 在CDN控制台绑定HTTPS证书,可选择由CDN托管免费证书或自有证书上传;b) 若启用HTTPS回源,确保Origin证书可信并填写正确回源Host;c) 在播放器使用https地址以避免混合内容问题。
11.
回源优化:缓存控制与重验证
建议:a) Origin返回Cache-Control与Expires合理指令,使用no-cache或max-age=10用于m3u8;b) 启用If-Modified-Since/ETag机制减少不必要回源;c) 对频繁更新的小文件使用短TTL并开启stale-while-revalidate策略(若CDN支持)。
12.
回源容错与多Origin配置
步骤:a) 在CDN配置中添加主备Origin,设置健康检查路径;b) 启用Origin重试与降级策略(如多个IP轮询);c) 定期检查健康检查日志并设置报警。
13.
推流与分发的调试方法
方法:a) 使用ffprobe或curl检查m3u8头:curl -I https://cdn.example.com/live/stream.m3u8;b) 检查返回头部X-Cache或Age判断是否命中CDN缓存;c) 在Origin查看访问日志、错误日志与Nginx状态页(stub_status)。
14.
自动清理与预热策略
做法:a) 使用CDN提供的Purge API对失效段或旧manifest进行即时清理;b) 对于将要上线的流或点播资产,使用预热接口或脚本提前拉取以提升首请求命中率;c) 定期清理历史分片目录,避免磁盘耗尽。
15.
性能监控与指标
关键指标:a) 监控RTT、回源时延、缓存命中率、并发连接数与带宽;b) 设置流量阈值报警和Origin错误率报警;c) 使用CDN统计、Grafana或Prometheus汇总并进行趋势分析。
16.
常见问题答疑一:CDN能否直接接收RTMP推流?
答:很多CDN业务只做HTTP(S)回源与分发,对RTMP通常要求先推到你的Origin(如Nginx+rtmp模块或流媒体服务器),再由CDN拉取或推流分发。部分CDN提供RTMP直推入口,需在控制台开通并使用CDN提供的推流地址。
17.
常见问题答疑二:如何在保证低延迟的同时提高缓存命中率?
答:把manifest(m3u8)TTL设短(5–10s),把分片(ts)TTL设为中等(30–60s);开启分片预取/预热、stale-while-revalidate与分片合并(如果可行),并确保Origin返回正确Cache-Control以配合CDN策略。
18.
常见问题答疑三:Origin服务器宕机如何快速恢复分发?
答:提前配置多Origin和健康检查、启用回源备份或S3类对象存储作为回源;配置CDN在回源失败时使用最近缓存(stale)或切换到备用回源;同时设置报警并自动化启动备用实例或容灾脚本。