后台操作手册 · 照着点就行
全部操作都在 Cloudflare 控制台里完成,9 步配完。每一步都写清四件事:在哪个页面 → 点哪个按钮 → 填什么 → 怎么算成功。
开始前,确认三件事
① 域名能改 NS(知道在哪个注册商买的、有登录权限)
② 用浏览器打开自己的网站,地址栏有 https 锁(源站本身已有有效证书)
③ 知道自己的网站后台目录名(第 6 步最后一条规则要用;本文统一写作
② 用浏览器打开自己的网站,地址栏有 https 锁(源站本身已有有效证书)
③ 知道自己的网站后台目录名(第 6 步最后一条规则要用;本文统一写作
/你的后台目录/,不写具体路径)
下面所有「左侧」都指控制台登录后、选中域名之后的那一列导航。
1添加站点
控制台首页 → 右上角 添加站点 (也可以在域名列表页点 + 添加站点)
- 浏览器打开
dash.cloudflare.com,输入邮箱和密码登录。新设备可能要求邮箱验证码。 - 登录后是账户主页,上方列出你已接入的域名。点右上角 添加站点。
- 输入框里填
zby365.com。只填主域名:不要带www,不要带https://,不要带末尾斜杠。 - 下方的计划列表里选 Free($0),点 继续。免费版已包含本手册用到的全部功能,不用升级。
- Cloudflare 开始扫描你现有的 DNS 记录,大约 10~60 秒,扫完展示一张记录表。
- 页面转到「更改名称服务器」,给出两个 NS 地址,形如
xxx.ns.cloudflare.com。把这两个记下来。 - 去域名注册商后台,找到「DNS 服务器 / Name Servers / 域名服务器」设置,把原来的两条删掉,换成这两条。
- 回到 Cloudflare,点 立即检查名称服务器。
- 顶部状态从 待处理 Pending 变成 活动 Active 就是接入成功。通常 10 分钟~2 小时,最长 24 小时。
扫出来的记录先别删
自动扫描有时会漏掉子域名,也可能带上你早就不用的旧记录。接入成功后到第 2 步逐条核对,确认没用的再删。
2DNS 记录与橙色云
左侧 DNS → 记录
- 打开后是一张表,五列:类型 / 名称 / 内容 / 代理状态 / TTL。
- 重点看「代理状态」这一列。每行右边有一朵云的开关:
- 橙色 = 已代理,访客流量先到 Cloudflare 再到你的服务器 —— 加速和防护都靠它。
- 灰色 = 仅 DNS,浏览器直接连你的服务器 —— 相当于没用 CDN。
- 把网站要用的记录全部点成橙色:
@(主域名)、www、以及手机站等子域名。 - 确认
www那条存在。如果没有,点 + 添加记录,按下表填。 - 改完不用保存,每一行是即时生效的。
| 字段 | 主域名那条 | www 那条 | 说明 |
|---|---|---|---|
| 类型 | A | CNAME | 给你 IP 用 A,给你主机名用 CNAME |
| 名称 | @ | www | 只填前缀,Cloudflare 自动补全成完整域名 |
| 内容 / 目标 | 你服务器的 IP | zby365.com | 不建议把 IP 写进文档或截图 |
| 代理状态 | 橙色 · 已代理 | 橙色 · 已代理 | 这一步别选错 |
| TTL | 自动 | 自动 | 开了橙色云后 TTL 由 Cloudflare 接管 |
灰色云会把源站 IP 暴露出去
只要某条记录是灰色,任何人拿这个域名去查 DNS 就能直接拿到你服务器的真实 IP,Cloudflare 的隐藏和保护全部失效。除了邮件(MX)、FTP 这类非 HTTP 服务,凡是浏览器要访问的记录一律点橙色。
以后加子站只要一步
在这里加一条记录:类型
CNAME、名称 blog、目标填主域名或新主机地址、代理状态橙色。SSL、TLS、缓存规则会自动继承,不需要重新配置一遍 Cloudflare。
3SSL/TLS 加密模式
左侧 SSL/TLS → 概览
- 页面顶部是四个加密模式卡片:关闭 / 灵活 / 完全 / 完全(严格),每个卡片前有一个单选圆点。
- 点 完全(严格)Full (strict)。选中后卡片边框会变橙色。
- 往下滚到「边缘证书」区域,按下面的表逐项设置。
- 设置都是即时生效,不用点保存。
| 项目 | 设成 | 为什么 |
|---|---|---|
| 加密模式 | 完全(严格) | Cloudflare 到源站走 HTTPS,并校验源站证书是否有效 |
| 始终使用 HTTPS | 开 | 访客用 http 访问自动跳 https |
| 自动 HTTPS 重写 | 开 | 页面里混着的 http 图片地址自动改写 |
| TLS 1.3 | 开 | 握手更快,且默认就支持 |
| 最低 TLS 版本 | 1.2 | 默认可能是 1.0,太旧,改掉 |
绝对不要选「灵活 Flexible」
本站源站自己会把 http 301 跳到 https。一旦选灵活,Cloudflare 用 http 回源 → 收到 301 → 跟着去 https → 再回源 → 又是 301……浏览器直接报「重定向次数过多」,整站打不开。这是新接入最经典的事故,而且现象看起来像网站挂了,很难往这一步上想。
选了「完全(严格)」后报 526 怎么办
说明源站证书不被信任:可能过期、自签、或者证书上的域名和你的域名不一致。两个办法:
① 在左侧 SSL/TLS → 源站服务器 → 创建证书 生成一张 15 年有效的源站证书,下载后装到主机面板的 SSL 配置里(免费,推荐);
② 临时降成「完全」先把站跑通,证书装好再改回严格。
① 在左侧 SSL/TLS → 源站服务器 → 创建证书 生成一张 15 年有效的源站证书,下载后装到主机面板的 SSL 配置里(免费,推荐);
② 临时降成「完全」先把站跑通,证书装好再改回严格。
4Speed 提速开关
左侧 Speed → 优化 (有些版本叫「速度 → 优化」)
- 页面是一列开关,每行左边是名称、右边是拨动开关。开关绿色=开,灰色=关。
- Brotli → 开。文本压缩比比 gzip 再小约 15%。
- Early Hints → 开。提前把 CSS/JS 地址推给浏览器并行下载。
- 0-RTT 连接恢复 → 开。回访访客复用上次握手,首字节更快。
- Rocket Loader → 关。默认应该就是关的,但务必亲眼确认一次。
- 找不到 Auto Minify 是正常的——这个功能 2024 年 8 月已被官方下线,网上还在教你怎么开的教程全部过时。
Rocket Loader 为什么必须关
它会把页面里所有 JS 改成「异步、延后、可能重排顺序」执行。本站是 SDCMS + jQuery,后台脚本、防爬脚本、页面初始化都依赖严格的加载顺序,开了之后典型症状是:前台白屏、按钮点了没反应、后台编辑器加载不出来。而且它对你的实际收益几乎为零,风险远大于收益。
5缓存配置
左侧 缓存 → 配置 (英文界面是 Caching → Configuration)
- 缓存级别 → 选 标准。它会按文件扩展名缓存静态资源,带查询串的地址也缓存。
- 浏览器缓存 TTL → 4 小时。这里只是兜底值,第 6 步的长缓存规则会覆盖它。
- Always Online → 开。源站短暂抽风时返回缓存副本,比直接报错好。
- Crawler Hints → 开。内容更新时向搜索引擎推提示(只对必应、Yandex 有效,百度不认)。
- 开发模式 → 保持关闭。开了等于全站不缓存,只在排查问题时临时开,用完必须关掉。
- 另外单独开一处:左侧 缓存 → Tiered Cache → 开启。它让边缘节点之间分层缓存,命中率更高。
一个容易误会的地方
缓存级别在 API 里叫
aggressive,在面板上显示的是「标准」。这两个是同一个东西,不是两个档位。别看到 aggressive 就以为要改成别的。
6Cache Rules 三条规则
左侧 缓存 → Cache Rules → 创建规则 (旧版界面叫「页面规则」「配置规则」)
这一步决定 CDN 到底加不加速。前面五步只是把开关打开,真正把静态资源缓存一个月是你现在要建的三条规则。
第 1 条 · 静态资源长缓存
- 点 创建规则,页面出现一个表单。
- 规则名称填:
静态资源长缓存 - 「如果传入请求匹配」下面选 自定义筛选表达式(Custom filter expression)。
- 点右边的 编辑表达式,把下面一整段粘进去(含大括号,别删):
http.request.uri.path.extension in {"css" "js" "jpg" "jpeg" "png" "gif" "webp" "svg" "ico" "woff" "woff2" "ttf" "eot"}
- 往下滚到「然后」,依次设置四项:
| 设置项 | 选什么 | 含义 |
|---|---|---|
| 缓存资格 | 符合条件(Eligible for cache) | 允许这些文件进边缘缓存 |
| 边缘 TTL | 覆盖源站 → 1 个月 | Cloudflare 节点上存 30 天,不再回源 |
| 浏览器 TTL | 覆盖源站 → 1 年 | 访客浏览器本地存 1 年 |
| 状态码 TTL | 新增一条:404、410 → 60 秒 | 不存在文件的「找不到」只记 1 分钟,避免图补上后访客还是 404 |
- 点页面底部 部署。列表里出现这一条即成功。
第 2 条 · 安装包中等缓存
同样点 创建规则,只有两处不一样:
| 项目 | 填法 |
|---|---|
| 规则名称 | 安装包中等缓存 |
| 表达式 | http.request.uri.path.extension in {"zip" "rar" "7z" "exe" "apk" "msi" "dmg" "iso"} |
| 边缘 TTL | 覆盖源站 → 3 天 |
| 浏览器 TTL | 覆盖源站 → 3 天 |
| 状态码 TTL | 404、410 → 60 秒 |
安装包为什么不给一个月
软件站常有「文件名不变、内容换成新版本」的情况。如果给它一个月缓存,用户可能下到旧包,你自己都发现不了。给 3 天,既能省回源流量,又不至于长期发错版本。真要立刻换包:缓存 → 配置 → 清除缓存 → 自定义清除,填那个文件的完整 URL 清一下。
第 3 条(可选)· 后台路径绕过缓存
这条叫「保险带」。前台 HTML 本来就不进缓存,加它只是让你在后台操作时永远看到源站最新内容。
| 项目 | 填法 |
|---|---|
| 规则名称 | 后台路径绕过缓存 |
| 表达式 | starts_with(http.request.uri.path, "/你的后台目录/")把「你的后台目录」换成你真实的目录名,本文不写出具体路径 |
| 缓存资格 | 绕过缓存(Bypass cache) |
| 位置 | 拖到规则列表最底部(见下图) |
顺序反了,规则会静默失效
Cloudflare 是「最后一条匹配的规则赢」,不是第一条。如果把「绕过缓存」放在最上面,它会被下面的静态资源长缓存直接覆盖——后台文件照样被缓存 30 天,而且面板不报错、不提示,只能靠实测发现。以后在面板里拖动顺序,记得把「绕过」永远留在最底部。
免费版额度
每个域名最多 10 条 Cache Rules(按域名算,不按账号算)。上面用了 3 条,还剩 7 条。
7安全设置
左侧 安全性 → 机器人 (英文 Security → Bots)
- 页面上有 Bot Fight Mode 一行,右侧是开关。确认它是关闭的(灰色)。
- 同一页往下,质询通过期 保持
30 分钟(默认值,一般不动)。 - 左侧 安全性 → 设置,安全级别 选 中(Medium)。
- 左侧 安全性 → WAF,里面的 Cloudflare 托管规则集 保持开启,不要关。它是免费版唯一的 WAF 层,属于正常默认行为。
Bot Fight Mode 会误伤百度蜘蛛
它按行为特征挑战「疑似自动化」的请求,而百度蜘蛛(Baiduspider)正好是爬虫。开了之后典型症状是:收录量几天内明显下降,站长平台抓取诊断失败。对以百度为主要流量来源的中文站,这个开关是纯负作用,一定关掉。
托管规则集要「观察」而不是「关掉」
它确实会主动拦截请求。接入后一周内,每天去 安全性 → 事件 看一眼:被拦或被质询的请求里,有没有出现百度、必应、Google 的蜘蛛,或者你自己的 IP。
如果发现误拦蜘蛛:安全性 → WAF → 自定义规则 → 新建,表达式填
如果发现误拦蜘蛛:安全性 → WAF → 自定义规则 → 新建,表达式填
(http.user_agent contains "Baiduspider") or (http.user_agent contains "Googlebot"),动作选 跳过 Skip,勾上跳过剩余全部规则。
8验收
不用在面板里操作。用浏览器和一条命令,确认 CDN 真的在工作
查看一:网站能正常打开
浏览器打开主域名,确认三件事:页面正常显示、地址栏有 https 锁、用 http:// 开头访问会自动跳到 https://。
查看二:静态资源命中缓存
- 在网站上随便打开一篇文章,右键点一张图片 → 复制图片地址。
- 用下面这条命令请求那个地址(把引号里的内容换成你复制的地址)。注意用 GET,不要加
-I:
curl -s -o /dev/null -D - "把图片地址粘贴到这里" | grep -i "cf-cache-status\|cache-control"
- 第一次跑,应该看到
cf-cache-status: MISS;隔几秒再跑一次,变成HIT就对了。 - 同时应该看到
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。
查看三:三个位置的实际效果
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 都没问题,卡住的只是你上传这个动作。
破解办法:走 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 令牌」删掉,不要长期留着。
令牌用完就去「配置文件 → API 令牌」删掉,不要长期留着。
关于本文的图片
标注真实截图的是浏览器实际打开网站截下来的;标注界面示意的是按 Cloudflare 控制台真实布局绘制的示意图,用于说明「点哪里、填什么」,不是截图。
关于隐私 本文刻意不写源站 IP、源站主机名和网站后台的具体路径,涉及位置一律用
标注真实截图的是浏览器实际打开网站截下来的;标注界面示意的是按 Cloudflare 控制台真实布局绘制的示意图,用于说明「点哪里、填什么」,不是截图。
关于隐私 本文刻意不写源站 IP、源站主机名和网站后台的具体路径,涉及位置一律用
/你的后台目录/ 代替。
甄宝园


