CDN双层架构实战 – 国内CDN + Cloudflare 配置步骤
评测概述
对于同时面向国内和海外用户的网站,单一cdn难以兼顾。国内CDN(又拍云/七牛云/阿里云)在大陆速度快,但海外节点弱;Cloudflare海外强,但国内慢。
双层架构:国内用户 -> 国内CDN -> Cloudflare -> 源站;海外用户 -> Cloudflare -> 源站。本文以又拍云 + Cloudflare 为例,分步讲解。
一、架构原理
国内用户访问又拍云节点,又拍云向Cloudflare请求资源,Cloudflare再回源到你的源站。海外用户直接访问Cloudflare节点。
优点是国内速度接近国内CDN水平,同时保留Cloudflare的安全防护和海外加速。缺点是增加一层代理,多一跳,但对国内用户影响不大。
二、前提条件
- 源站域名已备案(国内CDN要求)。
- 源站已配置好网站(如 baike300.com)。
- 已有又拍云(或其他国内CDN)账号和Cloudflare账号。
- 域名DNS支持按线路解析(如阿里云DNS、DNSPod)。
三、步骤1:在Cloudflare上配置源站
- 将你的主域名(如 baike300.com)接入Cloudflare,并保持云朵为橙色(代理状态)。
- 添加一条A记录,指向源站IP,云朵开启。
- 确保Cloudflare SSL/TLS 设置为“Full”或“Full (strict)”。
此时访问 baike300.com 将走Cloudflare。
四、步骤2:在国内CDN上添加加速域名
以又拍云为例:
- 添加加速域名:static.baike300.com(建议用二级域名)。
- 源站配置:填写 baike300.com(Cloudflare代理后的域名)。
- 端口:80和443。
- 加速区域:选择“中国大陆”。
又拍云会生成一个CNAME地址,如 static.baike300.com.upyun.com。
五、步骤3:配置DNS分流
在域名DNS服务商(如DNSPod)添加解析:
- 主域名 baike300.com 做默认解析(可指向Cloudflare IP或CNAME)。
- 为 static.baike300.com 添加CNAME记录,指向又拍云CNAME地址,线路选择“默认”或“境外”。
- 再添加一条CNAME记录,同样指向又拍云CNAME,线路选择“境内”。
- 如果需要强制国内用户走静态域名,修改网站代码中的资源URL(图片、CSS、JS)为 static.baike300.com。
六、步骤4:配置又拍云回源HTTPS
又拍云回源到 baike300.com(Cloudflare),需要处理证书问题。
方法A:在Cloudflare上生成源站证书(免费),下载.pem和.key文件,上传到又拍云“回源证书”处。
方法B:又拍云回源使用HTTP(不推荐,除非源站强制HTTPS)。
建议用方法A,配置如下:
- Cloudflare控制台 -> SSL/TLS -> 源站证书 -> 创建证书。保留默认设置(Cloudflare生成)。
- 复制公钥和私钥内容,粘贴到又拍云“回源证书”处。
- 又拍云域名配置中开启HTTPS,并上传域名的免费/付费SSL证书(访客访问用)。
七、步骤5:测试
- 使用国内代理或工具(如17ce)访问 static.baike300.com,检查是否解析到又拍云节点。
- 使用海外代理访问 baike300.com,检查是否走Cloudflare。
- 查看HTTP响应头,确认X‑Cache或CF‑Cache等头部。
八、常见问题
Q:国内CDN回源到Cloudflare会不会影响海外访问?
不会。海外用户直接访问Cloudflare节点,不经过国内CDN。
Q:国内CDN缓存命中率低?
可能是回源需要过Cloudflare导致延迟。将国内CDN的缓存时间调长(30天),减少回源。
Q:Cloudflare的防火墙规则还生效吗?
生效。所有经过Cloudflare的流量(包括国内CDN回源)都经过防火墙规则。注意不要误封国内CDN的回源IP,可将又拍云IP段加入白名单。
此方案适合有一定技术基础的站长。如果你只面向国内用户,单独使用国内CDN即可;只面向海外,用Cloudflare免费版足够。

