Cloudflare 配置最佳实践

Cloudflare 免费套餐对绝大多数站点都够用,但“接入”和“配好”是两回事。下面按 7 步走完 DNS 接入、SSL/TLS、页面规则、性能与安全配置,最后附一份上线检查清单,照着做就能把 Cloudflare 的作用发挥到最大。

第一步:添加域名

  1. cloudflare.com 注册账号(免费套餐对绝大多数站点够用)
  2. 点击 Add a Site 并输入你的域名
  3. Cloudflare 会自动扫描现有的 DNS 记录,逐条确认后提交

第二步:修改 NS 记录

Cloudflare 会分配两个域名服务器(如 ns1.cloudflare.comns2.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/