合理调整 Cloudflare 以获得最佳访问体验

Cloudflare 长久以来因为免费、丰富的内容分发网络而受世人热捧。先后面向进阶网站运营者推出的 Pro 版本更以其高性价比斩获好评。

越来越多的润云数据用户,会以提升访问者体验和团队形象等目标,使用 Cloudflare 代理流量。在这过程中,我们收集到诸多关于没有正确使用 Cloudflare 而导致实践目的南辕北辙的案例。

润云数据总结近期约 60 位用户的案例,并在本文向您总结一系列合理调整 Cloudflare 以获得最佳访问体验的思路和方案。

本文不包括“如何将域名接入 Cloudflare”或“如何使用 Cloudflare DNS 解析”的解决方案,仅仅包括如何调整配置优化访问体验。

如果不清楚自己刚部署的程序特性,可以尝试在润云数据门户搜索程序名称,寻找并了解润云数据为您推荐的配置方案。

如果可以,请使用官方“仪表盘”。

Cloudflare 官方的 Dashboard,我们称之“仪表盘”,总是跟进 Cloudflare 最新功能,且足够稳定。

Cloudflare 账户注册、登录、区域(网站)管理等都在“仪表盘”,网址是 https://dash.cloudflare.com/

除非您遇到网络问题,不得不使用第三方管理程序;或第三方服务商给予类似“免费共享 Enterprise Plan”的低成本高体验;否则不建议使用第三方管理程序。这些第三方程序或网址不一定拥有 Cloudflare 最新功能。

当然,市面上有众多优质的 Cloudflare Partner 服务,诚然您也是可以考量后使用的。这些 Partner 服务商拥有 Cloudflare 接入权,您也确实可以用极低的成本,享受比自己注册 Free 计划区域更高级的功能和服务。

购买 Pro 计划真的有用吗?

答案是肯定的。但是,不是所有网站使用 Pro 版本都能获得预期收益。

您必须明确知晓一点:Cloudflare Pro 不会开通新 CDN 节点,意味着将和和 Free 计划使用同样的 CDN 服务器。但是,Pro 计划会提供自动转 WebP(Cloudflare Polish) 和优化移动端体验(Cloudflare Mirage)等优化体验极高的新功能。

如果网址访问量足够大,且自身业务复杂,需要降低人工成本,那么可以考虑开通 Pro 计划。开通后也会自动启用优化建议。

Cloudflare 官方的 Pro 计划,每月费用为 20 刀,相当于6台雨云服务器。小站站长可以节省一点,见下优化方案。

如果您在问是否要买 Enterprise 计划?这篇文章不适合您,建议您直接与 Cloudflare 技术支持人员对话,他们会针对性给出最优的解决方案。

从“概述”开始

如果您是新接入 Cloudflare 的域名,那么在您进入管理内页后,会有一个很显眼的“快速入门指南”。

您可以立即点击“查看设置”,将里面的内容除“始终使用 HTTPS”之外,全部开启。为什么要当心“始终使用 HTTPS”?请见下面一条。

何时启用“始终使用 HTTPS”?

该设置位于“SSL/TLS”——“边缘证书”下。

作用:将所有使用方案 “http” 的请求重定向到 “https”。这将应用于该区域的所有 http 请求。

简单来看,如果您可以完全控制您的 Web 服务器如何回应用户请求,例如使用 Nginx 重定向,那么请关闭此功能,让您的服务器接管重定向。

如果此功能启用,一些待调试程序或待抓捕恶意机器的 HTTP 请求无法被正确传入服务器后进行分析。有的时候智简魔方下游反馈 API 总是请求不上,和这个功能有一些关系(同时也是因为下游填错了地址,Cloudflare 的跳转,智简魔方也看不懂)。

另一种情况必须关闭此功能:如果域名下面有 80/443 混用,或 HTTP、HTTPS 混用,例如 IDC 服务商的 HTTP 翼龙面板。否则,未启用 SSL 的子域名永远无法被正常访问。

有没有必要启用“HTTP 严格传输安全 (HSTS)”?

理由和处理方案同“始终使用 HTTPS”。

如果可以自己控制 Web 服务器,则让自己源站服务器处理 HSTS。

此功能也不应该随意开启。一旦开启,意味着一段时间以来,您的域名(甚至包括子域名)不能关闭 HTTPS,否则客户端拒绝访问。

除非需要满足合规性要求,否则建议通过重定向方式实现 HTTP 跳转 HTTPS。

如何设置“最低 TLS 版本”?

该设置位于“SSL/TLS”——“边缘证书”下。

默认 TLS 1.0。简单来说这样设置:

大前提!如果域名没有备案,而且想要国内安心访问:TLS 1.1。高版本 TLS 大部分地区运营商随机阻断,无法访问。

以获取“SSL 安全网址认证”为目的:TLS 1.1/TLS 1.2

特别的,使用智简魔方财务系统:TLS 1.1/TLS 1.2。智简魔方不支持 TLS 1.3。这是很多智简魔方无法开通新产品的原因!

爬虫资源池:TLS 1.0。高了新人不会调库。当然设置为 TLS 1.1 一方面又可以阻止大部分滥竽充数爬虫袭击。

总之,如果不清楚业务具体情况,设置为 TLS 1.1 比较好。更高版本协议也有访问速度提升(大陆地区则相反),但提升不是特别明显,智者见智。

WAF(应用防火墙)

WAF 是 Cloudflare 最棒的功能之一。它在“安全性”——“WAF”下。

Pro 计划直接先去开“超级自动程序攻击模式”和“托管规则”,两者可以有效探测并阻断大部分攻击。

WAF 作用:区域级 Web 应用程序防火墙 (WAF) 会检测并缓解此区域下所有流量的恶意请求。

如果刚接触 Cloudflare WAF,我个人建议先加这两条规则。

特别的,WAF 规则是从先到后顺序进行的,顺序进行操作,第一条匹配采取跳过则不再匹配后续规则,第一条不匹配则尝试开始匹配第二条,以此类推。

放行源站服务器(放在第一条)

表达式:其中 8.8.8.8 换成源站 IP 地址。

IP源地址 等于 源站IP

已知自动程序 等于 是

(ip.src eq 8.8.8.8) or (cf.client.bot)

采取措施:跳过,勾选所有 WAF 组件。

通过这段 WAF,可以让源站服务器和搜索引擎爬虫绕过后续所有 WAF 规则。这样既不影响源站的 Webhook 或其他自动操作,也不会影响正规搜索引擎收录。

如果面向国内用户,那么对所有海外请求质询(放在第二条)

表达式:

国家和地区 不等于 中国大陆

(ip.geoip.country ne "CN")

采取措施:托管质询。

可以比较放心地放行国内流量,如果是海外则先过一次 Cloudflare 致询(“4.5秒盾”),可以有效缓解来自海外的 CC 攻击。

有了 Cloudflare WAF,还需要在源站安装 WAF 吗?

看情况。

如果自认为雷池等 WAF 效果比 Cloudflare 更优秀,那么完全可以让源站处理 WAF。问题只是,处理 WAF 所需要的计算资源,不再由 Cloudflare 承担,而是您自己的源站服务器。

如果源站有 WAF,建议 Cloudflare 停用所有 WAF 规则,同时源站 WAF 要支持 CDN,否则总是会把 Cloudflare 回源 IP 当作恶意来源拦截。

多个 WAF 混用会有意料之外的结果。如果不愿意过多折腾,那么全让 Cloudflare 处理即可。

Cloudflare 指向 EasyPanel 等虚拟主机,则必须在虚拟主机处关闭所有类似的安全设置。除非像雨云适配了 CDN 穿透。大部分服务商还是没对虚拟主机做 CDN 适配的,可能导致回源被拦截。

是否需要开启 HTTP/3?

此功能在“速度”——“优化”——“协议优化”。

如果用户都在国内,不要开。否则,开启它。

国内运营商普遍随机阻断 Cloudflare UDP,意味着 Cloudflare 使用 QUIC 的 HTTP/3 服务,总会随机被迫超时。开启此功能后,国内用户几乎每3次访问就有1次超时。

2024年5月实测,沿海地区 QUIC 服务正常,访问体验提升明显。但大陆华中仍然存在不小的阻断问题。总之建议考虑用户群体开启这个功能。

当然,如果有海外用户,启用 QUIC 的 HTTP/3 服务会对访问带来前所未有的速度提升。可以缩短约 40% 访问时间。

自动程序攻击模式(Free 计划)

这个功能是 Free 计划的,在“安全性”——“自动程序”。Pro 计划则是“超级自动程序攻击模式”,如果是 Pro 计划可以大胆尝试开启。除非见下述。

如果只是做普通展示性网站或者个人博客,这个功能值得开启。它可以屏蔽常见扫描器。

但是,如果是 WordPress 这样有自动 Webhook 操作的程序,请“考虑”关闭这一项。Free 计划的自动程序攻击模式拦截实测存在问题,容易拦截正常程序请求。而且 WAF 配置的源站绕过规则不能绕过这个自动程序拦截。

可以尝试开启,然后自行测试。如果发现一些程序“定时任务”之类的功能瘫痪了,大概率是这个导致的,就请关闭它。

Pro 计划的“超级自动程序攻击模式”聪明得多,较少错误拦截而且可以查看日志。不过还是如上,测试后看情况开启

智简魔方用户请关闭这一项。

浏览器完整性检查

在“安全性”——“设置”。

作用:评估访问者浏览器的 HTTP 标头,以检查是否存在威胁。如果发现威胁,将显示阻止页面。

普通网站,建议开启。开启后留意测试,可能会拦截部分正常 API 请求。

如果是接口站,例如 GPT 镜像站,考虑关闭它。“不是所有做 Python 小玩具的用户都记得设置标头。”

安全级别

在“安全性”——“设置”。

普通网站,建议常开“高”

如果被 CC 攻击了,切换为“I’m Under Attack!”可以缓解攻击流量。

拥有“定时任务”的程序(例如智简魔方)和API 站不能使用“I’m Under Attack!”。WAF 源站规则不能用于绕过安全级别致询。

Early Hints

在“速度”——“优化”——“内容优化”。

作用:Cloudflare 的边缘将缓存并发送包含来自您的 HTML 页面的链接标头的103 Early Hints 响应。Early Hints 允许浏览器在看到来自源服务器的 200 OK 或其他最终响应之前预加载链接的资产。
103 Early Hints 是一种 HTTP 状态代码,用于加快内容交付。启用后,Cloudflare 可以缓存 HTML 页面中标有预加载和/或预连接的链接标头,然后在到达源服务器之前在 103 Early Hints 响应中提供这些信息。浏览器可以使用这些提示在等待源服务器的最终响应时提取链接的资产,这会显著提高页面加载速度。

可以考虑常开。记得测试就好。能提升加载速度。

Rocket Loader™

在“速度”——“优化”——“内容优化”。

作用:Rocket Loader 通过异步加载您的 Javascript(包括第三方脚本)来缩短绘制时间,这样它们就不会阻碍页面内容的渲染。

如果面向大陆地区用户,必须关闭它。因为 Rocket Loader 自己的脚本就因为魔法原因不能加载,导致整个网站脚本全部无法加载。

其他情况可以考虑开启,留意测试。开启后访问速度显著提升。

2024年4月开始,实测 Cloudflare 会通过站点域名路径加载 Rocket Loader 脚本,因此现在 Rocket Loader 脚本能否加载取决于站点自己能否加载(例如需要允许跨域脚本)。

如果一切就绪,可以常开此功能。首次显示速度缩短33%,用户体验提升明显。

总之,留意测试。例如 Nextcloud 就不能启用 Rocket Loader,会导致一系列问题。可以尝试到“配置规则”绕过 Nextcloud 服务。

Crawler Hints

在“缓存”——“配置”。

作用:当使用 Cloudflare 的站点更改内容时,Crawler Hints 会为搜索引擎和其他爬网程序提供高质量的数据。这样,爬网程序可以精确地抓取,避免浪费,同时可以普遍减少源服务器及其他 Internet 基础结构的资源消耗。

建议开启。

即使通过必应管理员工具发现,这个功能不算非常聪明。而且对访问速度貌似没有实质作用。但是值得开启。

但是不要依赖此功能。有能力的话,请为程序适配 IndexNow 。

缓存级别

在“缓存”——“配置”。

这个只能视情况仔细考量。如果不知道怎么考量,设置为“标准”

对于智简魔方这样的站点,缓存对它们是无效的。

对于 WordPress,“忽略查询字符串”可以帮助缓存大部分插件带版本号的 JS 脚本,从而允许缓存这些内容。

对于 NextCloud,只能使用“标准”。因为包含基于 GET 参数交付资源的程序,“忽略查询字符串”会导致不能针对用户返回正确的信息。

浏览器缓存 TTL

在“缓存”——“配置”。

作用:确定 Cloudflare 指示访问者的浏览器缓存文件的时长。在此期间,浏览器会从其本地缓存中加载文件,从而提高页面加载速度。

纯静态网站,设置成1年都好使,嘎嘎快。

动态网站,建议设置为“4小时”,仁者见仁。内容更新越快,时间建议缩短;更新越慢,时间建议拉长。

Tiered Cache

在“缓存”——“Tiered Cache”

建议启用 Smart Tiered Caching Topology。对您网站无害。

非 Pro 计划,或未启用 Argo 功能,则 Tiered Cache 速度提升效果不明显。如果启用 Argo 相关付费功能,实测 Tiered Cache 开启后能缩短约 35% 加载时间。

0 0 投票数
文章评分
0 评论
内联反馈
查看所有评论
0
本文贡献者正期待您发表意见x
滚动至顶部