Cloudflare 免费版能用出什么:CDN、缓存、规则与常见误区
Cloudflare 免费版给个人站点的价值远超「加速」:它同时是 DNS、CDN、证书签发方和一层 WAF。这篇记我真正用到的功能。
一、橙色云到底做了什么
开启代理(橙色云)后,流量路径变成:
用户 → Cloudflare 边缘节点 →(回源)→ 你的服务器带来的变化:
- 隐藏源站 IP:用户看到的是 CF 的 IP,扫不到你真实服务器;
- 边缘缓存:静态资源在节点上,用户就近取;
- 自动 HTTPS:CF 与用户之间自动有证书;
- 压缩与优化:免费版可开 Brotli、自动压缩图片( Polish)、HTTP/3。
开了橙色云之后,源站与 CF 之间也要配证书(CF 的 Flexible 模式可以不用,但那意味着 CF→源站 是明文,不推荐)。用 Full (Strict) 模式 + 源站自签或 Let's Encrypt 证书最稳。
二、加密模式怎么选
| 模式 | CF→源站 | 要求 |
|---|---|---|
| Flexible | HTTP 明文 | 源站无证书也能用(不推荐) |
| Full | HTTPS 但不校验 | 源站有证书即可 |
| Full (Strict) | HTTPS 且校验 | 源站要有有效证书(推荐) |
选 Full (Strict),源站用 certbot 签一份证书就行。
三、缓存规则
免费版默认只缓存静态扩展名(js/css/图片等),HTML 不缓存。想改的话用 Cache Rules:
Rules → Cache Rules → Create rule;- 匹配条件例如「文件扩展名属于 css/js/png/webp」;
- 设置
Cache eligibility: Eligible for cache+Edge TTL: 1 month; - HTML 那一档单独设
Bypass cache,否则发新版用户看不到。
清缓存:
Caching → Configuration → Purge Everything(全清);- 或 Custom Purge 只清某个 URL;
- 用 API 集成到部署脚本里:
curl -X POST "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/purge_cache" \
-H "Authorization: Bearer $CF_TOKEN" \
-H "Content-Type: application/json" \
--data '{"purge_everything":true}'四、页面规则:www 跳转、强制 HTTPS
免费版有 3 条 Page Rules(现在推荐用 Rules → Redirect Rules,更灵活):
| 场景 | 配置 |
|---|---|
| 强制 HTTPS | 开 Always Use HTTPS(SSL/TLS → Edge Certificates) |
| www → 根域 | Redirect Rules:hostname 以 www. 开头 → 301 到根域 |
| 某路径不缓存 | Cache Rules 里 Bypass |
五、安全相关(免费版就够用)
- WAF:免费版有基础规则集,能挡大部分扫描和常见注入;
- Bot Fight Mode:挡掉相当一部分垃圾机器人;
- Rate Limiting:免费版有最基本的限制规则,CC 攻击时能顶一下;
- 防火墙规则:可以按国家/地区、UA、路径封禁,比如直接挡掉某个 UA。
一个实战经验:开启「Under Attack Mode」会先让用户过 5 秒检查页,对抗小型 CC 很有效,但会明显影响真实用户体验,只在被打的时候临时开。
六、为什么开了 CDN 反而更慢
四个常见原因:
- 节点选择问题:国内访问被分配到海外节点,这是免费版最大的短板,无解(只能换线路或不用);
- HTML 被缓存:把动态内容缓存了,用户看到旧内容,你以为「生效了但其实没生效」;
- 回源慢:CDN 只缓存静态,动态请求仍要回源。源站在美国、用户在亚洲,动态请求依然慢;
- 没开压缩:CF 的 Brotli 在
Speed → Optimization里,确认打开了。
# 看是否命中 CF 缓存
curl -sI https://www.bzii.cn | grep -i "cf-cache-status"
# HIT / MISS / DYNAMIC / BYPASS
# 看经过了哪个节点
curl -sI https://www.bzii.cn | grep -i "cf-ray"七、源站要做的配合
既然源站 IP 被隐藏了,就该只放行 Cloudflare 的 IP 段,防止别人绕过 CDN 直接打源站:
# 定期拉取 CF IP 列表并写进 ufw(写成定时任务)
for ip in $(curl -s https://api.cloudflare.com/client/v4/ips | jq -r '.result.ipv4_cidrs[]'); do
sudo ufw allow proto tcp from $ip to any port 443
done
sudo ufw delete allow 443/tcp # 删掉之前对所有人开放的规则同时 Nginx 里恢复真实 IP(否则日志全是 CF 的 IP):
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
# ... 完整列表见 cloudflare.com/ips
real_ip_header CF-Connecting-IP;八、免费版的边界
不给你用的东西:Argo 智能路由、图片 Mirror、高级 WAF 规则、自定义缓存键大部分能力、100+ 条页面规则。
对个人站点来说,这些缺失基本无感。免费版最值钱的其实是隐藏源站 IP 和那层 WAF。
