后台操作手册 · 照着点就行

全部操作都在 Cloudflare 控制台里完成,9 步配完。每一步都写清四件事:在哪个页面 → 点哪个按钮 → 填什么 → 怎么算成功。

示例站点 zby365.com 方案 Free 免费版 步骤 9 步 更新 2026-10-23
开始前,确认三件事 ① 域名能改 NS(知道在哪个注册商买的、有登录权限)
② 用浏览器打开自己的网站,地址栏有 https 锁(源站本身已有有效证书)
③ 知道自己的网站后台目录名(第 6 步最后一条规则要用;本文统一写作 /你的后台目录/,不写具体路径)

下面所有「左侧」都指控制台登录后、选中域名之后的那一列导航。

1添加站点

控制台首页 → 右上角 添加站点 (也可以在域名列表页点 + 添加站点)
  1. 浏览器打开 dash.cloudflare.com,输入邮箱和密码登录。新设备可能要求邮箱验证码。
  2. 登录后是账户主页,上方列出你已接入的域名。点右上角 添加站点。
  3. 输入框里填 zby365.com。只填主域名:不要带 www,不要带 https://,不要带末尾斜杠。
  4. 下方的计划列表里选 Free($0),点 继续。免费版已包含本手册用到的全部功能,不用升级。
  5. Cloudflare 开始扫描你现有的 DNS 记录,大约 10~60 秒,扫完展示一张记录表。
  6. 页面转到「更改名称服务器」,给出两个 NS 地址,形如 xxx.ns.cloudflare.com。把这两个记下来。
  7. 去域名注册商后台,找到「DNS 服务器 / Name Servers / 域名服务器」设置,把原来的两条删掉,换成这两条。
  8. 回到 Cloudflare,点 立即检查名称服务器。
  9. 顶部状态从 待处理 Pending 变成 活动 Active 就是接入成功。通常 10 分钟~2 小时,最长 24 小时。
CLOUDFLARE添加站点▾A添加站点输入要接入 Cloudflare 的域名(不带 www,不带 https://)zby365.com✓ 格式正确选择计划✓Free$0免费版Pro$20/月专业版Business$200/月商业版Enterprise定制企业版建议:先选 Free,配置跑通后随时可升级。免费版已包含本手册用到的全部功能。继续取消
界面示意图 1 · 添加站点。域名只填主域名,计划选 Free。这一步只影响 Cloudflare 侧,还没动你的服务器。
扫出来的记录先别删 自动扫描有时会漏掉子域名,也可能带上你早就不用的旧记录。接入成功后到第 2 步逐条核对,确认没用的再删。

2DNS 记录与橙色云

左侧 DNS → 记录
  1. 打开后是一张表,五列:类型 / 名称 / 内容 / 代理状态 / TTL。
  2. 重点看「代理状态」这一列。每行右边有一朵云的开关:
    1. 橙色 = 已代理,访客流量先到 Cloudflare 再到你的服务器 —— 加速和防护都靠它。
    2. 灰色 = 仅 DNS,浏览器直接连你的服务器 —— 相当于没用 CDN。
  3. 把网站要用的记录全部点成橙色:@(主域名)、www、以及手机站等子域名。
  4. 确认 www 那条存在。如果没有,点 + 添加记录,按下表填。
  5. 改完不用保存,每一行是即时生效的。
字段主域名那条www 那条说明
类型ACNAME给你 IP 用 A,给你主机名用 CNAME
名称@www只填前缀,Cloudflare 自动补全成完整域名
内容 / 目标你服务器的 IPzby365.com不建议把 IP 写进文档或截图
代理状态橙色 · 已代理橙色 · 已代理这一步别选错
TTL自动自动开了橙色云后 TTL 由 Cloudflare 接管
CLOUDFLAREzby365.com▾A概览分析DNSSSL/TLS安全性Speed缓存规则网络流量DNS 记录zby365.com+ 添加记录类型名称内容代理状态TTLA@你的源站 IP已代理自动CNAMEwwwzby365.com已代理自动CNAMEmzby365.com已代理自动CNAMEblogzby365.com已代理自动橙色的云 = 流量经过 Cloudflare(要开)灰色的云 = 仅 DNS 解析,浏览器直连源站,会暴露源站真实 IP(除邮件等非 HTTP 服务外不要用)
界面示意图 2 · DNS 记录列表。右侧那一列云朵是整份配置里最容易点错的地方。内容列刻意留空,不在文档里写出真实 IP。
灰色云会把源站 IP 暴露出去 只要某条记录是灰色,任何人拿这个域名去查 DNS 就能直接拿到你服务器的真实 IP,Cloudflare 的隐藏和保护全部失效。除了邮件(MX)、FTP 这类非 HTTP 服务,凡是浏览器要访问的记录一律点橙色。
以后加子站只要一步 在这里加一条记录:类型 CNAME、名称 blog、目标填主域名或新主机地址、代理状态橙色。SSL、TLS、缓存规则会自动继承,不需要重新配置一遍 Cloudflare。

3SSL/TLS 加密模式

左侧 SSL/TLS → 概览
  1. 页面顶部是四个加密模式卡片:关闭 / 灵活 / 完全 / 完全(严格),每个卡片前有一个单选圆点。
  2. 点 完全(严格)Full (strict)。选中后卡片边框会变橙色。
  3. 往下滚到「边缘证书」区域,按下面的表逐项设置。
  4. 设置都是即时生效,不用点保存。
项目设成为什么
加密模式完全(严格)Cloudflare 到源站走 HTTPS,并校验源站证书是否有效
始终使用 HTTPS开访客用 http 访问自动跳 https
自动 HTTPS 重写开页面里混着的 http 图片地址自动改写
TLS 1.3开握手更快,且默认就支持
最低 TLS 版本1.2默认可能是 1.0,太旧,改掉
CLOUDFLAREzby365.com▾A概览分析DNSSSL/TLS安全性Speed缓存规则网络流量SSL/TLS概览 · 加密模式关闭不加密灵活CF→源站 用 HTTP⚠ 本站会死循环完全CF→源站 用 HTTPS✓完全(严格)且校验证书有效✓ 选这个边缘证书始终使用 HTTPShttp 访问自动跳 https自动 HTTPS 重写页面里的 http 资源改写为 httpsTLS 1.3更快的握手最低 TLS 版本1.2(右侧下拉选择)1.2为什么绝对不能选「灵活」:本站源站自己会把 http 301 跳到 https。CF 用「灵活」走 http 回源 → 收到 301 → 再走 https → 无限重定向,整站打不开。
界面示意图 3 · SSL/TLS 概览。四个模式并排,选最右边那个。左边的「灵活」是本站的禁区。
绝对不要选「灵活 Flexible」 本站源站自己会把 http 301 跳到 https。一旦选灵活,Cloudflare 用 http 回源 → 收到 301 → 跟着去 https → 再回源 → 又是 301……浏览器直接报「重定向次数过多」,整站打不开。这是新接入最经典的事故,而且现象看起来像网站挂了,很难往这一步上想。
选了「完全(严格)」后报 526 怎么办 说明源站证书不被信任:可能过期、自签、或者证书上的域名和你的域名不一致。两个办法:
① 在左侧 SSL/TLS → 源站服务器 → 创建证书 生成一张 15 年有效的源站证书,下载后装到主机面板的 SSL 配置里(免费,推荐);
② 临时降成「完全」先把站跑通,证书装好再改回严格。

4Speed 提速开关

左侧 Speed → 优化 (有些版本叫「速度 → 优化」)
  1. 页面是一列开关,每行左边是名称、右边是拨动开关。开关绿色=开,灰色=关。
  2. Brotli → 开。文本压缩比比 gzip 再小约 15%。
  3. Early Hints → 开。提前把 CSS/JS 地址推给浏览器并行下载。
  4. 0-RTT 连接恢复 → 开。回访访客复用上次握手,首字节更快。
  5. Rocket Loader → 关。默认应该就是关的,但务必亲眼确认一次。
  6. 找不到 Auto Minify 是正常的——这个功能 2024 年 8 月已被官方下线,网上还在教你怎么开的教程全部过时。
CLOUDFLAREzby365.com▾A概览分析DNSSSL/TLS安全性Speed缓存规则网络流量Speed优化内容优化Brotli比 gzip 再小约 15%,文本资源必开Early Hints提前把 CSS/JS 地址推给浏览器并行下载0-RTT 连接恢复回访客复用上次握手,首字节更快Rocket Loader重排 JS 执行顺序 —— 本站绝不能开Rocket Loader 必须关:它会把所有 JS 改成异步延后执行,本站后台脚本、防爬脚本、jQuery 都依赖固定顺序,开了大概率出现空白页或按钮失灵。Auto Minify(自动压缩)已在 2024 年 8 月下线,界面上找不到是正常的,不用找。
界面示意图 4 · Speed 优化。前三项开,最后一项 Rocket Loader 必须关。
Rocket Loader 为什么必须关 它会把页面里所有 JS 改成「异步、延后、可能重排顺序」执行。本站是 SDCMS + jQuery,后台脚本、防爬脚本、页面初始化都依赖严格的加载顺序,开了之后典型症状是:前台白屏、按钮点了没反应、后台编辑器加载不出来。而且它对你的实际收益几乎为零,风险远大于收益。

5缓存配置

左侧 缓存 → 配置 (英文界面是 Caching → Configuration)
  1. 缓存级别 → 选 标准。它会按文件扩展名缓存静态资源,带查询串的地址也缓存。
  2. 浏览器缓存 TTL → 4 小时。这里只是兜底值,第 6 步的长缓存规则会覆盖它。
  3. Always Online → 开。源站短暂抽风时返回缓存副本,比直接报错好。
  4. Crawler Hints → 开。内容更新时向搜索引擎推提示(只对必应、Yandex 有效,百度不认)。
  5. 开发模式 → 保持关闭。开了等于全站不缓存,只在排查问题时临时开,用完必须关掉。
  6. 另外单独开一处:左侧 缓存 → Tiered Cache → 开启。它让边缘节点之间分层缓存,命中率更高。
CLOUDFLAREzby365.com▾A概览分析DNSSSL/TLS安全性Speed缓存规则网络流量缓存配置缓存级别缓存所有静态扩展名,带查询串也缓存标准▾浏览器缓存 TTL源站没发 Cache-Control 时的兜底值4 小时▾Always Online源站短暂不可用时返回缓存副本Crawler Hints向搜索引擎推送内容变更提示开发模式临时绕过全部缓存(排查问题用,平时必须关)另外两处单独开关缓存 → Tiered Cache已开启缓存 → 配置 → Crawler Hints已开启
界面示意图 5 · 缓存配置。三项开关打开,开发模式保持关闭,缓存级别选标准。
一个容易误会的地方 缓存级别在 API 里叫 aggressive,在面板上显示的是「标准」。这两个是同一个东西,不是两个档位。别看到 aggressive 就以为要改成别的。

6Cache Rules 三条规则

左侧 缓存 → Cache Rules → 创建规则 (旧版界面叫「页面规则」「配置规则」)

这一步决定 CDN 到底加不加速。前面五步只是把开关打开,真正把静态资源缓存一个月是你现在要建的三条规则。

第 1 条 · 静态资源长缓存

  1. 点 创建规则,页面出现一个表单。
  2. 规则名称填:静态资源长缓存
  3. 「如果传入请求匹配」下面选 自定义筛选表达式(Custom filter expression)。
  4. 点右边的 编辑表达式,把下面一整段粘进去(含大括号,别删):
http.request.uri.path.extension in {"css" "js" "jpg" "jpeg" "png" "gif" "webp" "svg" "ico" "woff" "woff2" "ttf" "eot"}
  1. 往下滚到「然后」,依次设置四项:
设置项选什么含义
缓存资格符合条件(Eligible for cache)允许这些文件进边缘缓存
边缘 TTL覆盖源站 → 1 个月Cloudflare 节点上存 30 天,不再回源
浏览器 TTL覆盖源站 → 1 年访客浏览器本地存 1 年
状态码 TTL新增一条:404、410 → 60 秒不存在文件的「找不到」只记 1 分钟,避免图补上后访客还是 404
  1. 点页面底部 部署。列表里出现这一条即成功。
CLOUDFLAREzby365.com▾A概览分析DNSSSL/TLS安全性Speed缓存规则网络流量缓存 → Cache Rules → 创建规则创建缓存规则规则名称静态资源长缓存如果传入请求匹配:自定义筛选表达式编辑表达式http.request.uri.path.extension in {"css" "js" "jpg" "jpeg" "png""gif" "webp" "svg" "ico" "woff" "woff2" "ttf" "eot"}然后:1缓存资格Eligible for cache符合条件2边缘 TTLEdge TTL override覆盖源站 · 1 个月3浏览器 TTLBrowser TTL override覆盖源站 · 1 年4状态码 TTLStatus code TTL404、410 → 60 秒部署取消共 4 个设置项,填完点「部署」立即生效
界面示意图 6 · 缓存规则的六个填写位置。上面是「如果…匹配」,下面是「然后…做什么」,四个设置项按编号填,最后点部署。

第 2 条 · 安装包中等缓存

同样点 创建规则,只有两处不一样:

项目填法
规则名称安装包中等缓存
表达式http.request.uri.path.extension in {"zip" "rar" "7z" "exe" "apk" "msi" "dmg" "iso"}
边缘 TTL覆盖源站 → 3 天
浏览器 TTL覆盖源站 → 3 天
状态码 TTL404、410 → 60 秒
安装包为什么不给一个月 软件站常有「文件名不变、内容换成新版本」的情况。如果给它一个月缓存,用户可能下到旧包,你自己都发现不了。给 3 天,既能省回源流量,又不至于长期发错版本。真要立刻换包:缓存 → 配置 → 清除缓存 → 自定义清除,填那个文件的完整 URL 清一下。

第 3 条(可选)· 后台路径绕过缓存

这条叫「保险带」。前台 HTML 本来就不进缓存,加它只是让你在后台操作时永远看到源站最新内容。

项目填法
规则名称后台路径绕过缓存
表达式starts_with(http.request.uri.path, "/你的后台目录/")
把「你的后台目录」换成你真实的目录名,本文不写出具体路径
缓存资格绕过缓存(Bypass cache)
位置拖到规则列表最底部(见下图)
Cloudflare 是「最后一条匹配的规则赢」,不是第一条✕ 错误:绕过放在最上面1后台路径 · 绕过绕过缓存2静态资源长缓存长缓存3安装包中等缓存3 天结果:被下面两条盖掉,实测仍是 HIT,等于没加↑ 序号 = 面板里从上到下的顺序✓ 正确:绕过放在最底下1静态资源长缓存长缓存2安装包中等缓存3 天3后台路径 · 绕过绕过缓存结果:DYNAMIC,后台不再命中缓存↑ 序号 = 面板里从上到下的顺序这个坑不报错、不提示,只能靠实测发现。以后在面板里拖动规则顺序时,把「绕过」那条永远留在最底部。
界面示意图 7 · 规则顺序。同一个逻辑,放最上面会被下面两条盖掉,放到最底部才生效。
顺序反了,规则会静默失效 Cloudflare 是「最后一条匹配的规则赢」,不是第一条。如果把「绕过缓存」放在最上面,它会被下面的静态资源长缓存直接覆盖——后台文件照样被缓存 30 天,而且面板不报错、不提示,只能靠实测发现。以后在面板里拖动顺序,记得把「绕过」永远留在最底部。
免费版额度 每个域名最多 10 条 Cache Rules(按域名算,不按账号算)。上面用了 3 条,还剩 7 条。

7安全设置

左侧 安全性 → 机器人 (英文 Security → Bots)
  1. 页面上有 Bot Fight Mode 一行,右侧是开关。确认它是关闭的(灰色)。
  2. 同一页往下,质询通过期 保持 30 分钟(默认值,一般不动)。
  3. 左侧 安全性 → 设置,安全级别 选 中(Medium)。
  4. 左侧 安全性 → WAF,里面的 Cloudflare 托管规则集 保持开启,不要关。它是免费版唯一的 WAF 层,属于正常默认行为。
CLOUDFLAREzby365.com▾A概览分析DNSSSL/TLS安全性Speed缓存规则网络流量安全性机器人安全性级别机器人WAF事件Bot Fight Mode挑战疑似自动化流量已关闭保持关闭:它会挑战所有可疑请求,包括百度蜘蛛(Baiduspider)。对以百度为流量来源的中文站,开了等于把收录掐掉。同一页往下,「质询通过期」保持 30 分钟(默认值,一般不用动)
界面示意图 8 · 机器人设置。Bot Fight Mode 必须灰色关闭。
Bot Fight Mode 会误伤百度蜘蛛 它按行为特征挑战「疑似自动化」的请求,而百度蜘蛛(Baiduspider)正好是爬虫。开了之后典型症状是:收录量几天内明显下降,站长平台抓取诊断失败。对以百度为主要流量来源的中文站,这个开关是纯负作用,一定关掉。
托管规则集要「观察」而不是「关掉」 它确实会主动拦截请求。接入后一周内,每天去 安全性 → 事件 看一眼:被拦或被质询的请求里,有没有出现百度、必应、Google 的蜘蛛,或者你自己的 IP。
如果发现误拦蜘蛛:安全性 → WAF → 自定义规则 → 新建,表达式填 (http.user_agent contains "Baiduspider") or (http.user_agent contains "Googlebot"),动作选 跳过 Skip,勾上跳过剩余全部规则。

8验收

不用在面板里操作。用浏览器和一条命令,确认 CDN 真的在工作

查看一:网站能正常打开

浏览器打开主域名,确认三件事:页面正常显示、地址栏有 https 锁、用 http:// 开头访问会自动跳到 https://。

查看二:静态资源命中缓存

  1. 在网站上随便打开一篇文章,右键点一张图片 → 复制图片地址。
  2. 用下面这条命令请求那个地址(把引号里的内容换成你复制的地址)。注意用 GET,不要加 -I:
curl -s -o /dev/null -D - "把图片地址粘贴到这里" | grep -i "cf-cache-status\|cache-control"
  1. 第一次跑,应该看到 cf-cache-status: MISS;隔几秒再跑一次,变成 HIT 就对了。
  2. 同时应该看到 cache-control: max-age=31536000,这就是第 6 步那条规则写进去的 1 年。
看到这个含义怎么办
cf-cache-status: HIT命中正常,CDN 在工作
cf-cache-status: MISS未命中第一次请求正常,再请求一次应转 HIT
cf-cache-status: DYNAMIC不缓存HTML 页面出现是正常的;静态资源出现说明规则没生效
cf-cache-status: EXPIRED已过期TTL 到了正在回源,正常
cf-cache-status: BYPASS被绕过命中了你建的第 3 条「绕过」规则
HTTP 526证书错误回第 3 步,源站证书不受信任
HTTP 522 / 523源站连不上源站宕机、或防火墙挡了 Cloudflare 的 IP
别用 curl -I 验证缓存 -I 发的是 HEAD 请求,而缓存规则通常只对 GET 生效,HEAD 会稳定地「谎报」成 DYNAMIC。用 -I 测会让你以为规则全没生效,换成 GET 立刻见 HIT。

查看三:三个位置的实际效果

接入 Cloudflare 后的桌面端首页
真实截图图 9 · 桌面端首页。接入后页面结构与样式完全不变,只是加载变快。
接入 Cloudflare 后的文章页
真实截图图 10 · 文章页。文章页、栏目页这类 HTML 页面走的是「不缓存、每次回源」,所以新发的文章立刻就能看到。
接入 Cloudflare 后的手机端页面
真实截图图 11 · 手机端子域名。主域名和子域名在同一个 Cloudflare 区域下,SSL 和缓存规则自动继承,不用单独配置。

9日常运营五条

接入 CDN 之后,只有五件事的行为和以前不一样。记住这五条,日常更新内容和以前完全一样。

场景要不要清缓存说明
发文章、改文章、改栏目不用HTML 页面一律 DYNAMIC,每次都回源,改完刷新前台就是新的
改 CSS / JS 文件不用清,但要升 ?v=浏览器本地存 1 年,改文件名或版本号才会重新下载
换图片 / 换附件必须换文件名清缓存只能清 Cloudflare 节点,清不掉访客浏览器里的副本
上传超过 100MB 的文件—网页/后台 POST 上传会失败,改用 FTP 直传
后台看访客 IP—可能全变成 104.x / 172.6x 开头的 Cloudflare 节点 IP
改 CSS 时同步升版本号 在模板里引用样式的地方把 ?v=20261023 一起改掉。这一步以前是「建议」,接 CDN 之后变成必须。阴险的地方在于:你自己用无痕窗口测试时能看到新样式(没有本地缓存),会以为没问题,但老访客一年内都是旧的。
100MB 是免费版的硬顶 单次请求体上限 100MB,试过往上调会被直接拒绝。软件安装包很容易超这个数——网页上传和后台 POST 上传都会失败。
破解办法:走 FTP 直传(FTP 不经过 Cloudflare,不受限制),或者把安装包放网盘/对象存储,只让 HTML 和图片走 CDN。
注意方向:下载不受限制,访客下载几个 G 都没问题,卡住的只是你上传这个动作。

A附录:用 API 一次配完

如果不想一条条点,可以用 API Token 把上面第 3~6 步的设置一次性写进去。适合以后给新域名复制配置。

1. 创建令牌

右上角头像 → 配置文件 → 左侧 API 令牌 → 创建令牌 → 拉到最下面选 创建自定义令牌
范围权限组级别用途
区域区域设置 Zone Settings编辑SSL、Brotli、缓存级别等全部开关
区域SSL 和证书 SSL and Certificates编辑Always Use HTTPS、最低 TLS 版本
区域缓存清除 Cache Purge清除改完设置清一次全站缓存
区域区域 Zone读取取 zone ID、核对当前配置
区域缓存规则 Cache Rules编辑建第 6 步的三条规则

「区域资源」三个下拉依次选 包括 → 特定区域 → 你的域名。令牌只在创建时显示一次,复制下来。用完记得回这个页面删掉。

2. 批量改开关

TOK="你的令牌"
ZID="你的 zone ID"          # 用 GET /zones?name=你的域名 取

for kv in \
  "ssl:strict" \
  "always_use_https:on" \
  "automatic_https_rewrites:on" \
  "min_tls_version:1.2" \
  "tls_1_3:on" \
  "brotli:on" \
  "early_hints:on" \
  "0rtt:on" \
  "rocket_loader:off" \
  "cache_level:aggressive" \
  "browser_cache_ttl:14400" \
  "always_online:on" ; do
  k=${kv%%:*}; v=${kv##*:}
  curl -s -X PATCH -H "Authorization: Bearer $TOK" -H "Content-Type: application/json" \
    --data "{\"value\":\"$v\"}" \
    "https://api.cloudflare.com/client/v4/zones/$ZID/settings/$k" | grep -o '"success":[a-z]*'
done

3. 检查结果

# 回读全部设置
curl -s -H "Authorization: Bearer $TOK" \
  "https://api.cloudflare.com/client/v4/zones/$ZID/settings" \
  | grep -o '"id":"[a-z_0-9]*","value":[^,]*' | head -30

# 清一次全站缓存
curl -s -X POST -H "Authorization: Bearer $TOK" -H "Content-Type: application/json" \
  --data '{"purge_everything":true}' \
  "https://api.cloudflare.com/client/v4/zones/$ZID/purge_cache"
两个提醒 别用「全局 API 密钥 Global API Key」——那是整个账号的完全控制权,不限于某一个域名,泄露等于账号被接管。
令牌用完就去「配置文件 → API 令牌」删掉,不要长期留着。
关于本文的图片
标注真实截图的是浏览器实际打开网站截下来的;标注界面示意的是按 Cloudflare 控制台真实布局绘制的示意图,用于说明「点哪里、填什么」,不是截图。

关于隐私 本文刻意不写源站 IP、源站主机名和网站后台的具体路径,涉及位置一律用 /你的后台目录/ 代替。