Cloudflare 配置最佳实践
Cloudflare 免费套餐对绝大多数站点都够用,但“接入”和“配好”是两回事。下面按 7 步走完 DNS 接入、SSL/TLS、页面规则、性能与安全配置,最后附一份上线检查清单,照着做就能把 Cloudflare 的作用发挥到最大。
第一步:添加域名
- 在 cloudflare.com 注册账号(免费套餐对绝大多数站点够用)
- 点击 Add a Site 并输入你的域名
- Cloudflare 会自动扫描现有的 DNS 记录,逐条确认后提交
第二步:修改 NS 记录
Cloudflare 会分配两个域名服务器(如 ns1.cloudflare.com、ns2.cloudflare.com),到域名注册商后台把 NS 改成这两个地址,让流量先经过Cloudflare CDN。
# 验证 NS 是否生效(通常需要 1-48 小时)
dig +short ns example.com
# 应返回:ns1.cloudflare.com ns2.cloudflare.com
第三步:配置 SSL/TLS
| 模式 | 加密范围 | 信任级别 | 适用场景 |
|---|---|---|---|
| Off | 无 | — | 仅测试 |
| Flexible | 仅浏览器↔Cloudflare | 低 | 源站无 SSL |
| Full | 端到端 | 中 | 源站有自签证书 |
| Full (Strict) | 端到端且校验源站证书 | 高 | 推荐 |
建议:始终使用 Full (Strict),配合有效的源站证书(例如来自Let's Encrypt)。另外建议开启 Always Use HTTPS,并配置 HSTS(max-age=31536000),让浏览器强制走 HTTPS,避免中间人降级攻击;这两项在第六步的安全设置里一起确认。
第四步:页面规则(Page Rules)
页面规则的价值在于“全局默认 + 路径特例”:大部分流量按默认缓存策略走,特殊路径(后台、动态脚本)单独覆盖。免费套餐只有 3 条规则,所以要先想清楚哪三类路径最需要差异化。
# 页面规则(免费套餐:3 条)
规则 1:example.com/wp-admin/*
- 安全级别:高
- 缓存级别:绕过
- 禁用应用:✅
规则 2:example.com/*.php
- 缓存级别:标准
- 边缘缓存 TTL:0(动态 PHP 不缓存)
规则 3:example.com/wp-content/uploads/*
- 缓存级别:标准
- 边缘缓存 TTL:7 天
第五步:性能优化
在控制台开启的功能
- ✅ Auto Minify — 自动压缩 HTML/CSS/JS
- ✅ Brotli — 比 Gzip 更好的压缩率
- ✅ HTTP/2 与 HTTP/3 — 更快的连接
- ✅ 0-RTT 连接恢复 — 回访用户更快
缓存配置
# 浏览器缓存 TTL:4 小时(默认)
# 边缘缓存 TTL:取决于页面规则
# 推荐的缓存规则:
- 静态资源(js、css、png、jpg、webp):30 天以上
- HTML 页面:0-1 小时
- 后台管理面板:完全绕过缓存
缓存 TTL 本质是“新鲜度”和“命中率”之间的取舍。静态资源把 TTL 拉长到 30 天以上,是因为文件名或路径通常带版本号,更新时换个文件名就能强制刷新;HTML 如果缓存太久,内容更新用户看不到,所以保持 0-1 小时比较稳妥。
第六步:安全配置
WAF(Web 应用防火墙)
安全级别:中(默认)
质询放行时长:30 分钟
启用规则:
- SQL 注入防护(配合Web 安全加固)
- XSS(跨站脚本)防护
- PHP 注入防护
- 目录穿越防护
- 垃圾信息防护
其他安全设置
- Bot Fight Mode — 开启(拦截恶意机器人)
- Rate Limiting — 保护登录/API 接口
- SSL — Full (Strict)
- Always Use HTTPS — 开启
- HSTS — 开启,
max-age=31536000
第七步:验证配置
# 检查 DNS 解析
dig +short example.com
# 检查 SSL 证书
curl -vI https://example.com 2>&1 | grep -i "ssl\|certificate"
# 检查 Cloudflare 响应头
curl -sI https://example.com | grep -i "cf-"
# 检查 HTTP/2 支持
curl -sI --http2 https://example.com | head -5
上线检查清单
- 域名已添加到 Cloudflare
- NS 已到注册商修改
- SSL 设置为 Full (Strict)
- Auto Minify 已开启
- 页面规则已配置缓存
- WAF 安全规则已启用
- Always Use HTTPS 已开启
- HSTS 已配置
- DNS 解析已验证
接入前需要准备什么
在动手前先把三件事准备好,整个过程会顺很多。第一,域名管理权限:NS 改动需要在注册商后台操作,提前确认你知道注册商账号密码,别等改了才发现登不进去。第二,源站信息:把源站 IP、当前 DNS 记录导出一份清单,Cloudflare 扫描时逐条核对,避免把测试环境的记录也搬过去。第三,HTTPS 证书:如果源站已经配了 Let's Encrypt 证书,直接选 Full (Strict);如果没有,先让源站装上证书再切,别用 Flexible 顶着——那会让浏览器到 Cloudflare 之间加密、Cloudflare 到源站之间裸奔。
常见问题
改完 NS 一直显示“待激活”怎么办? DNS 变更生效通常需要几分钟到 48 小时。先本地确认解析结果确实指向了 Cloudflare 的 NS,再检查注册商那边是否有多余的 NS 记录。超过 24 小时仍未生效,联系注册商确认是否被缓存或锁定期限制。
源站 IP 会暴露吗? 默认情况下会。只要源站 IP 被暴露(比如通过历史 DNS 记录或邮件头),攻击者就能绕过 CDN 直打源站。建议在源站防火墙只放行 Cloudflare 的 IP 段,并开启 Cloudflare 的“仅使用 Cloudflare 证书”相关设置。
开了缓存但页面没变快? 先看命中率。用 curl -sI 检查响应头里的 cf-cache-status,如果一直是 DYNAMIC,说明页面规则里没有覆盖对应路径,或响应头带了不缓存标记。静态资源记得设长 TTL,HTML 不要缓存太久。
页面规则和缓存规则有什么区别? 页面规则(Page Rules)在免费套餐里只有 3 条,更适合做“全局加特例”的简单控制;缓存规则(Cache Rules)数量更多、匹配条件更细,适合复杂站点。新站点建议先用页面规则把基础框架搭好,等规则不够用了再迁到缓存规则。
参考:Cloudflare 帮助中心 https://developers.cloudflare.com/ssl/