CDN 加速域名默认支持 HTTP/1.1 与 HTTPS(TLS 1.2/1.3),HTTP/2 随 HTTPS 一并可用;HTTP/3(QUIC)、WebSocket、gRPC 属于需要手动开启的增值能力;HLS/HTTP-FLV 走七层加速,RTMP 只用于推流;TCP/UDP 任意协议必须走四层加速。配置前先确认回源协议与源站监听端口一致,否则会直接报 502。
CDN 加速域名默认支持哪些协议?
结论:开一个 HTTP/HTTPS 加速域名,默认拿到的是 HTTP/1.1、HTTP/2 和 HTTPS,HTTP/3 与 WebSocket 必须去控制台单独打开。
七层 CDN 的协议能力分三层看:传输层是 TLS 1.2 与 TLS 1.3(TLS 1.0/1.1 在 2020 年 3 月被 Chrome、Firefox、Safari、Edge 同时移除支持,开了也会握手失败);应用层是 HTTP/1.1 与 HTTP/2;再往上是 HTTP/3、WebSocket、gRPC 这类可选协议。加速域名默认只放行 80 和 443 端口,非标准端口需要在控制台额外申请,否则请求打不到节点。
自查方法:curl -I --http2 https://你的域名 看返回头里是否带 HTTP/2,curl -I --http3 https://你的域名 验证 HTTP/3 是否生效。
HTTP/2 和 HTTP/3 有什么区别,要不要都开?
结论:都开。HTTP/2 解决的是连接级复用,HTTP/3 解决的是流级队头阻塞,两者不冲突,客户端会自动选。
HTTP/2 跑在 TCP 上,一条 TCP 连接上多路复用多个请求,但一旦丢包,整条连接上所有流都要等重传,这就是 TCP 层的队头阻塞。HTTP/3 把传输层换成基于 UDP 的 QUIC,每条流独立重传,弱网下首屏时间改善最明显。
开启顺序不能反:先开通 HTTPS 并部署证书 → 在 CDN 控制台的「HTTPS 配置」里打开 HTTP/3 → 用 curl --http3 或浏览器 DevTools 的 Protocol 列看是否显示 h3。没有 HTTPS 就没有 HTTP/3,因为 QUIC 强制加密。
WebSocket 和 gRPC 这类长连接,CDN 支持吗?
结论:主流云 CDN 都支持 WebSocket,但默认关闭,且超时时间默认 60 秒,不调大会导致长连接被节点周期性断开。
WebSocket 的正确配置是三步:控制台开启 WebSocket 开关 → 把「WebSocket 超时时间」从默认 60 秒调到业务所需值(阿里云、腾讯云 CDN 该项可配置范围上限为 300 秒)→ 客户端加心跳包,间隔建议 30 秒,短于超时时间的一半。心跳是保命配置,只靠调超时时间,连接空闲 5 分钟后照样断。
gRPC 基于 HTTP/2 且要求双向流,必须 CDN 侧支持 gRPC 透传,并且回源协议要是 HTTPS/HTTP2,普通的 HTTP/1.1 回源会直接报错。
直播和点播该选 HLS、HTTP-FLV 还是 RTMP?
结论:RTMP 只用来推流,不能用来播;播放端选 HTTP-FLV(延迟 2~5 秒)或 HLS(延迟 15~30 秒,LL-HLS 可压到 3~5 秒)。
- RTMP:基于 TCP 1935 端口,浏览器早在 2020 年底随 Flash 一起停止支持,现在只作为 OBS 等推流端的入口协议。
- HTTP-FLV:把 FLV 封装塞进 HTTP 长连接,延迟低,适合互动直播,但移动端部分浏览器不支持。
- HLS:切片为 .m3u8 + .ts,兼容性最好,iOS Safari、Android、智能电视通吃,代价是延迟高。
点播场景直接走 HTTP/HTTPS 分发 MP4 或 HLS,不需要额外协议配置。
四层加速和七层加速支持的协议有什么不同?
结论:七层 CDN 只认 HTTP/HTTPS/WebSocket 等应用层协议,四层加速则原样转发 TCP/UDP 报文,理论上支持任意基于 TCP/UDP 的协议。
需要加速 MySQL(3306)、MQTT(1883)、Redis(6379)、游戏自定义 UDP 协议、DNS(53)时,只能选四层(TCP/UDP)加速。四层不解析内容,因此也就没有缓存、HTTP/3、WebSocket 这些七层特性,证书卸载要自己做。
回源协议怎么配才不踩坑?
结论:回源协议有三档——HTTP、HTTPS、协议跟随,源站只监听 443 时必须选 HTTPS 或「协议跟随」,选 HTTP 会稳定返回 502。
协议跟随的含义是:用户用 HTTPS 访问,CDN 就用 HTTPS 回源;用户用 HTTP 访问,CDN 就用 HTTP 回源。如果源站强制 301 跳 HTTPS,又配了 HTTP 回源,会形成回源跳转循环,表现为「无限重定向」。
另一个高频坑是证书:源站用的是自签名证书时,要在 CDN 侧开启「回源 HTTPS 不校验证书」,否则回源握手失败。
配好之后建议按顺序验证:curl -I https://域名 看协议与状态码 → 控制台看回源协议命中情况 → 用 openssl s_client -connect 域名:443 -tls1_3 确认 TLS 版本。配置中撞上证书或回源报错,可以到 GJ 站长论坛的 SSL/CDN/网站防护版块发帖,规则变更类信息看社区公告 https://www.gj0.com/forum-12.html。
一句话收束:HTTP/2 和 HTTPS 是默认项,HTTP/3、WebSocket、gRPC 是手动项,RTMP 只推不播,TCP/UDP 走四层,回源协议必须对齐源站端口——把这五条记住,CDN 协议配置基本不会翻车。