1.
准备工作:确认角色与信息
- 明确三方角色:业务方(你)、CDN 服务商、推流端(第三方主播或推流服务器)。
- 收集必要信息:你要使用的业务域名(例 push.example.com)、CDN 提供的推流域名(例 push.cdn-provider.com)、推流协议(RTMP/RTMPS/SRT)、是否需要证书或鉴权密钥。
2.
DNS:配置 CNAME 映射标准流程
- 在你的域名 DNS 管理面板新增 CNAME 记录:主机记录填写推流子域名(如 push),记录值填写 CDN 提供的推流域名(push.cdn-provider.com)。
- TTL 设置建议为 300 秒以便快速回滚与测试。保存后通过 dig/nslookup 验证:dig CNAME push.example.com +short。
3.
CDN 控制台:绑定域名与类型选择
- 在 CDN 控制台添加域名并选择“推流/直播推送”类型,填写你的业务域名(push.example.com)。
- 提交后 CDN 会验证 CNAME 指向,或要求你在 DNS 添加验证记录。等待 CDN 审核通过并生效。
4.
证书与 SNI:HTTPS/RTMPS 场景
- 若使用 RTMPS 或 HTTPS 回源,需要为业务域名准备证书。可在 CDN 控制台上传证书或使用 CDN 的托管证书。
- 确保推流端支持 SNI 并在推流 URL 中使用你的业务域名,证书的 CN/SAN 包含该域名。
5.
推流 URL 格式与示例
- 常见 RTMP 推流格式:rtmp://push.example.com/live/streamKey 或 rtmps://push.example.com/live/streamKey。
- 向第三方推流方提供:推流 URL(含域名)、app 名称(如 live)、流名(streamKey)以及是否使用 TLS/证书、推流鉴权方式。
6.
推流鉴权:签名、Token 与防盗链
- 常用鉴权方式:静态 stream key、带过期时间的签名(如 md5(secret+stream+expire)),或使用 HMAC-SHA256。
- 实装示例(伪代码):expire = now+3600; token = HMAC_SHA256(secret, stream+expire); 推流 URL 附带 ?token=xxx&expire=yyy。CDN 校验器根据 secret 验证。
7.
来源白名单与 IP 校验
- 可在 CDN 或推流端配置允许的推流 IP 列表,避免匿名推流。若第三方使用动态 IP,可配 VPN 或固定出口 IP。
- 若用域名白名单,确保白名单解析稳定且不会被 CDN 中间层替换。
8.
回源策略与 Header 控制
- 若 CDN 需要回源到你的推流服务器(或第三方回源),配置回源域名与端口,注意回源协议(http/https/rtmp)。
- 设置必要的头部(如 Host、Origin、X-Forwarded-For)以便后端识别真实来源。避免泄露内部信息。
9.
本地与远端测试:FFmpeg 推流示例
- 使用 FFmpeg 做推流测试:ffmpeg -re -i test.mp4 -c copy -f flv "rtmp://push.example.com/live/streamKey"。若使用 RTMPS:rtmps://push.example.com:443/live/streamKey。
- 同时在 CDN 下游拉流验证播放:使用播放器拉取播放地址(如 http://play.example.com/live/streamKey.m3u8)。
10.
验证 CNAME 生效与域名解析链
- 验证步骤:1) dig push.example.com CNAME 查看是否指向 CDN 域名;2) dig push.example.com A/AAAA 查看最终返回 IP;3) 在不同运营商网络(手机/家宽/公司网)测试解析是否一致。
- 若解析未生效,检查 DNS TTL、缓存、是否在 CDN 控制台完成绑定。
11.
常见问题与排查清单
- 无法推流:检查推流 URL/Key 是否正确、鉴权参数是否过期、证书是否匹配域名。
- 推流成功但无播放:确认推流到正确的“上行域名”,回源及转发规则是否配置,确认切片/转封装(HLS、FLV)任务是否完成。
12.
安全加固建议
- 开启最小权限的推流key策略,定期轮换密钥;对高风险账号启用 IP 白名单或二次签名。
- 在 CDN 层启用异常推流检测(高并发/超长时长/异常分辨率)以自动告警并阻断疑似滥用。
13.
运维监控与回滚预案
- 建立监控:推流成功率、卡顿率、推流延迟、鉴权失败率等指标。设置自动告警并提供回滚 DNS 的操作文档(降低 TTL)。
- 回滚流程:若发现新 CNAME 有问题,立即把 DNS 指向旧域或临时回源 IP,通知 CDN 解除新绑定。
14.
问:CNAME 对接后推流一直 401/403,该如何定位?
- 答:首先确认推流 URL 的鉴权参数(token、expire、streamKey)是否正确与未过期;其次检查 CDN 控制台的鉴权规则与你给第三方的签名算法是否一致;最后查看 CDN 日志定位具体错误码并核对回源 Host 与证书。
15.
问:第三方使用自带域名推流,如何保证映射安全且不被滥用?
- 答:建议要求第三方将自己的推流域名通过 CNAME 指向你指定的 CDN 推流域名,并在 CDN 侧仅接受该 CNAME 下的域名且开启推流鉴权和 IP 白名单;同时启用 HMAC 签名带过期时间,防止凭证泄露长期有效。
16.
问:如何在上线前做完整的验收测试清单?
- 答:验收应包含:DNS CNAME 生效验证、证书与 SNI 检查、推流端(FFmpeg/OBS)推流成功并检查 CDN 收到的日志、鉴权失败率测试、回源播放测试、不同网络解析一致性测试、异常推流模拟与报警验证。