Cloudflare 提供了多种安全和性能优势,但并非所有优势都与 WordPress 完全兼容。让我们深入了解 Cloudflare 的设置,以确定适合您的 WordPress 网站的功能。
- SSL
- 速度
- 缓存
- 防火墙
一、SSL
Cloudflare 支持四种 SSL/TLS 加密模式 – 关闭、灵活、完全和完全(严格)。
![四种 SSL/TLS 加密模式](https://tkwlkj.com/wp-content/uploads/2024/06/cloudflare-ssl-tls.jpg)
- 关闭 –不加密。
- 灵活 –仅加密浏览器和 Cloudflare 之间的连接。
- 完整 –端到端加密,但允许在原始服务器上使用自签名证书。
- 完整(严格) –端到端加密,需要 Cloudflare 的免费原始证书或受信任 CA(证书颁发机构)的证书。我们建议使用完整(严格)SSL 模式以获得大安全性。
对于在其 WordPress 网站上已经使用免费的 Let’s Encrypt SSL 证书客户,建议使用 Cloudflare 上的“完整”或“完整(严格)”选项。
或者,您也可以生成 Cloudflare 原始证书以安装在您的原始服务器上。如果您的主机不提供免费 SSL 证书,则在您的服务器上安装 Cloudflare 原始证书将允许您使用完整(严格)SSL 模式。
1)始终使用 HTTPS
我们建议启用此选项以自动将所有 HTTP 请求转发到 HTTPS。
![始终使用 HTTPS](https://tkwlkj.com/wp-content/uploads/2024/06/cloudflare-ssl-tls-yes.jpg)
2)HTTP 严格传输安全 (HSTS):(新手不建议)
HSTS 代表“HTTP 严格传输安全”,用于强制 Web 浏览器使用安全的 HTTPS 连接。在 Cloudflare 上启用 HSTS 可确保HTTP 请求永远不会到达您的源服务器。如果您的网站已设置为使用 HTTPS,我们建议您也在源服务器上配置 HSTS 。
![](https://tkwlkj.com/wp-content/uploads/2024/06/cloudflare-ssl-hsts.jpg)
HTTP 严格传输安全 (HTTP Strict Transport Security, HSTS) 可以大幅提高网站的安全性。但是,启用 HSTS 时,请谨记以下重要注意事项:
必须启用 HTTPS (SSL) 才能使用 HSTS。
- 如果您打开 HSTS,但您的网站不支持 HTTPS,浏览器将不接受 HSTS 设置。
- 如果您启用了 HSTS 但离开了 Cloudflare,您需要通过新的服务提供商继续支持 HTTPS,否则,在您支持 HTTPS 之前,访问者将无法访问您的站点。
- 如果在启用 HSTS 后关闭了 Cloudflare 的 HTTPS,并且源服务器上没有有效的 SSL 证书,访问者将无法访问您的网站。
注意:可以通过以下几种方法禁用 Cloudflare 的 HTTP:在 DNS 记录中遮蔽子域,“暂停” Cloudflare 服务,或通过您的 Cloudflare 仪表板配置错误的自定义 SSL 证书(例如,无效的 SSL 证书、过期证书或不匹配的主机名)。
如果您需要在域上禁用 HTTPS,必须先在您的 Cloudflare 仪表板中禁用 HSTS,并等到长期限过去(以确保每个浏览器都知道此更改),然后才能禁用 HTTPS。平均长期限为六个月(您可以在下一步中设置长期限)。如果您在禁用 HSTS 之前删除了 HTTPS,访问者将无法访问您的网站,直至达到长期限或您再次支持 HTTPS。由于在启用 HSTS 的网站上禁用 HTTPS 可能会导致这些后果,因此我们强烈建议您先部署 HTTPS 服务再启用此功能。
3)低 TLS 版本(谨慎操作)
TLS(传输层安全性)是一种加密协议,允许通过网络安全地传输数据。默认情况下,Cloudflare 将 TLS 1.0 设置为协议版本。某些安全标准(例如 PCI DSS 3.2)需要较新版本的 TLS 协议才能达到合规性要求。如果您的网站需要特定的 TLS 版本,您可以通过转到SSL/TLS > Edge 证书 > 低 TLS 版本来更改设置。
什么是低 TLS 版本?
低 TLS 版本设置指定了访问者要使用 TLS 连接到您的域所必须支持的低 TLS 版本。例如,如果选择了 TLS 1.1,将拒绝尝试使用 TLS 1.0 进行连接的访问者,而允许尝试使用 TLS 1.1、1.2 或 1.3(如果启用)进行连接的访问者。
####为何要指定低 TLS 版本?
有些安全标准(如 PCI DSS 3.2)强制执行强加密标准,其强加密定义为 TLS 1.1 或更高版本。例如,指定 TLS 1.1 可以帮助您的域符合 PCI DSS 3.2 要求
4)自动 HTTPS 重写(建议)
此功能会检查HTML 代码中的 HTTP 资源 URL ,以查看它们是否可以通过 HTTPS 访问。如果可以,则会自动使用 HTTPS 变体重写它们。自动 HTTPS 重写有助于确保安全的浏览体验,避免出现混合内容错误。
为何要使用自动 HTTPS 重写?
如果您的站点包含指向 HTTP URL 的链接或引用,而这些链接或引用也能通过 HTTPS 安全提供,则自动 HTTPS 重写会有帮助。如果您通过 HTTPS 连接到站点但未显示锁图标,或者地址栏中显示黄色警告三角形,则表明您的站点可能包含对 HTTP 资产(“混合内容”)的引用。
混合内容通常是由于不受网站所有者控制的因素引起的,例如嵌入的第三方内容或复杂的内容管理系统。通过将 URL 从 “http” 重写为 “https”,自动 HTTPS 重写功能可简化通过 HTTPS 提供整个网站的任务,有助于消除混合内容错误,并确保您的网站加载的所有数据不被窃取和篡改。
####自动 HTTPS 重写是否会修正所有混合内容错误?
不会,只会重写已知支持 HTTPS 的 URL。我们使用来自 EFF 的 HTTPS Everywhere 和 Chrome 的 HSTS 预加载列表等的数据来确定哪些域支持 HTTPS。如果您的区域不在其中任何一个列表中,将仅重写主动内容。被动内容(如图像)不会重写,仍会导致混合内容错误。
二、速度
大多数与性能相关的 Cloudflare 设置(例如资产小化和图像优化)都可以在“速度”选项卡中找到。
![速度](https://tkwlkj.com/wp-content/uploads/2024/06/cloudflare-speed.jpg)
1)图像大小调整(仅限企业)
Cloudflare 的图像调整大小功能仅适用于商业计划用户。如果在WordPress 主题中正确实施,此功能可用于将图像缩略图生成工作转移至 Cloudflare。与WordPress 中的内置缩略图生成功能相比,这具有多项优势。
对于动态生成图像大小的网站,使用 Cloudflare 的图像调整大小功能可以减少 CPU 使用率 – 这使您的网站能够为更多并发用户提供服务,而无需增加 CPU 资源。Cloudflare 图像调整大小还有助于减少磁盘空间使用量,因为缩略图不必存储在服务器上。
Cloudflare 图像调整大小的工作原理是将端点添加到图像前面。请查看下面的示例,其中展示了该功能的工作原理。
原始图片网址
https://yourdomain.com/wp-content/uploads/2020/01/picture.jpg
调整大小后的图片 URL
https://yourdomain.com/cdn-cgi/image/fit=contain,format=auto,metadata=none,onerror=redirect,quality=70,width=720/https://yourdomain.com/wp-content/uploads/2020/01/picture.jpg
可以调整“宽度”参数以动态生成不同的缩略图大小,而无需对原始服务器施加任何额外的资源负载。如果您正在寻找类似于 Cloudflare 的图像调整大小功能的独立服务,Imgix 和 Cloudinary 是不错的选择。
不要忘记查看我们关于网络图像优化的深入指南。
2)Polish(仅限专业版)
Cloudflare Polish 是一种图像优化服务,可自动压缩JPG、PNG、GIF和其他图像文件。图像在 Cloudflare 的边缘进行处理,这意味着托管您的 WordPress 网站的服务器不会承受任何性能负担。Polish 还支持Google 的 WEBP 格式 – 这意味着优化的WEBP 图像将自动提供给 Chrome、Brave 和其他支持该格式的浏览器。
Polish 是 WordPress 网站的一项有用功能,原因如下。如果您使用TinyPNG或Imagify等图像优化插件,Polish 可以大幅降低服务器的 CPU 使用率,从而为访问者带来更稳定的浏览体验。由于Polish 优化的图像存储和缓存在服务器外,因此您不必担心会用尽磁盘空间来存储 WEBP 版本的图像。
3)自动缩小
Cloudflare 的自动压缩功能会自动压缩缓存的 CSS、JSS 和 HTML 资源。如果您没有使用Autoptimize或WP-Rocket等 WordPress 插件压缩资源,我们建议您在 Cloudflare 中启用自动压缩功能。
4)Brotli
Brotli 是GZIP的替代方案,这是一种压缩算法,可在将 Web 请求提供给访问者之前减小其大小。与 GZIP 相比,Brotli 提供更高的压缩率,这意味着用户可以更快地加载页面。问题是并非所有 Web 浏览器都支持Brotli 压缩。无论如何,我们建议启用 Cloudflare 的 Brotli 功能,因为来自不受支持的浏览器的请求将直接回退到 GZIP 压缩。
5)增强 HTTP/2 优先级(仅限专业版)
HTTP/2的引入通过并行化和多路复用显著提升了网站的性能。Cloudflare 增强的 HTTP/2 优先级功能更进一步,通过智能解析您网站的 HTML 来确定以何种顺序加载资产以获得佳性能。据Cloudflare称,增强的 HTTP/2 优先级可以将页面加载时间减少高达 50%。
![增强 HTTP/2 优先级](https://tkwlkj.com/wp-content/uploads/2024/06/cloudflare-speed-2.jpg)
6)Mirage(仅限专业版)
Mirage 是一项针对移动和低带宽连接的图片优化功能。启用 Mirage 后,在初始页面加载期间,图片会被替换为低分辨率占位符。页面加载完成后,全分辨率图片会被延迟加载。
Mirage 还能够将多个图像请求合并为一个请求,从而减少完全加载页面所需的往返次数。如果您的网站使用大量图像并且针对移动设备密集型人群,Cloudflare Mirage 可以对性能产生积极影响。
7)Rocket Loader
Rocket Loader 是一项通过异步加载 JavaScript 资源来加快加载时间的功能。这有效地减少了页面的渲染阻塞内容data-cfasync="false"
,从而缩短了页面加载时间。我们建议在启用 Rocket Loader 的情况下测试您的网站,看看它是否能提高您的页面速度。如果您的 WordPress 网站依赖于按特定顺序加载 JavaScript 资源,您可以通过向脚本标记添加属性来绕过 Rocket Loader 。
三、缓存
默认情况下,Cloudflare 会缓存静态资产,如 CSS、JS 和图像文件。请注意,Cloudflare 默认不会缓存您网站生成的 HTML。
1)缓存级别
我们建议将缓存级别保留为“标准”,这样可以使用的查询字符串访问资产的更新版本。
2)浏览器缓存过期(通常根据网站更新频率来)
确定 Cloudflare 指示访问者的浏览器缓存文件的时长。在此期间,浏览器会从其本地缓存中加载文件,从而提高页面加载速度。
####“浏览器缓存 TTL”有什么作用?
“浏览器缓存 TTL”用于指定缓存的文件将在访问者的浏览器缓存中保留的时长。此过期时间是 Cloudflare 将设置的时间,除非您在 Web 服务器中指定了更长的时间。
延长过期时间可确保提高重复访问者的加载速度。但是,延长过期时间也意味着这些文件在修改后需要更长的时间才会更新。
注意:此外,还可以通过在源服务器上指定更长的缓存时间来增加缓存过期时间,或者使用 Cache Rules 为特定路径或资源设置不同的缓存过期时间。Cloudflare 使用的值将在源服务器缓存标头的时间与您的 Cloudflare 设置之间取较大者
![](https://tkwlkj.com/wp-content/uploads/2024/06/cloudflare-cache-ttl.jpg)
四、防火墙
如果您的主机不提供可自定义的防火墙,Cloudflare 的免费计划包括一个允许五条自定义规则的基本防火墙。可以配置防火墙规则以阻止特定 IP 地址、用户代理、请求方法、HTTP 引荐来源,甚至国家/地区。
![Cloudflare WAF 防火墙](https://tkwlkj.com/wp-content/uploads/2024/06/cloudflare-waf.jpg)
例如,如果您发现您的WooCommerce 商店收到大量来自目标市场以外国家/地区的虚假订单,则可以使用 Cloudflare 的免费防火墙来阻止来自整个国家的流量。
Cloudflare 的 Pro 计划具有更强大的Web 应用程序防火墙 (WAF)。WAF 提供专门的托管规则集,可帮助进一步保护您的网站。例如,有针对 WordPress 和 PHP 网站的规则集。
对于大多数 WordPress 网站来说,Cloudflare 免费计划提供的安全级别已经足够。但是,如果您运行的是需要更多保护的关键业务网站,Cloudflare 的专业级 WAF 和托管规则集可以帮助您进一步保护网站。
五、网络
在 Cloudflare 的“网络”设置中,我们建议启用 HTTP/2、HTTP/3(使用 QUIC)和 0-RTT 连接恢复。
正如我们前面提到的,HTTP/2 通过并行化和多路复用为 HTTP/1.1 带来了多项改进。同样, HTTP/3通过使用一种名为 QUIC 的新 UDP 协议(而不是传统的 TCP),进一步扩展了 HTTP/2 的性能。
安全的 HTTP/3 连接还受益于优化的握手例程,从而缩短了连接时间。在 Cloudflare 仪表板中启用 HTTP/3 后,受支持的客户端将能够使用 HTTP/3 连接到 Cloudflare 服务器。
后,Cloudflare 的 0-RTT 连接恢复功能可以缩短之前连接到您网站的访问者的加载时间。
六、规则
Cloudflare 的页面规则功能允许您自定义特定 URL 的设置。页面规则可用于禁用某些资产的缓存、更改选定页面的安全级别等。Cloudflare 页面规则有两个关键组件 – URL 匹配模式和对匹配的 URL 执行的操作。在下面的屏幕截图中,您可以看到一条 Cloudflare 页面规则,它将 www URL 重定向到非 www 版本。
![](https://tkwlkj.com/wp-content/uploads/2024/06/cloudflare-page-rules.jpg)
此规则匹配以 开头的 URL www.brianonwp.com
。请注意包含星号字符,它允许您创建通配符匹配模式。将星号视为“此处的任何内容”。在 URL 模式下,您可以看到此页面规则配置为将所有匹配的请求 301 重定向到https://brianonwp.com/$1
,其中“$1”指的是匹配模式中的“第一个通配符”。
使用类似这样的页面规则,对 的请求www.brianli.com/specific-page/
将被重定向到brianli.com/specific-page/
。
使用 Cloudflare 页面规则,您可以将特定设置应用于任何匹配的 URL。查看下面可应用于页面规则的设置列表。某些设置甚至可以组合成单个页面规则!
- 始终在线 –启用或禁用 Cloudflare 的“始终在线”功能,如果发现原始服务器处于离线状态,则该功能提供页面的静态 HTML 副本。
- 始终使用 HTTPS –强制匹配的 URL 使用 HTTPS。
- 自动缩小——启用或禁用 HTML、CSS 和 JS 缩小。
- 自动 HTTPS 重写 –允许将 HTML 中的 HTTP URL 重写为 HTTPS 版本。
- 浏览器缓存 TTL –指定匹配 URL 的浏览器缓存 TTL。例如,您可以为不同类型的文件设置不同的浏览器缓存 TTL。
- 浏览器完整性检查——启用或禁用 Cloudflare 的“浏览器完整性检查”功能,该功能检查 HTTP 标头以清除机器人和恶意流量。
- 缓存欺骗防护 –启用或禁用 Cloudflare 的“缓存欺骗防护”功能,该功能通过确保资产的文件扩展名与其“内容类型”匹配来防止Web 缓存欺骗攻击。
- 缓存级别——配置匹配 URL 的缓存级别。
- 禁用应用程序 –禁用匹配 URL 的 Cloudflare 应用程序集成。
- 禁用性能 –禁用匹配 URL 的性能相关功能。
- 禁用 Railgun –禁用 Railgun 匹配 URL。
- 禁用安全性 –禁用匹配 URL 的安全功能。
- 边缘缓存 TTL –指定边缘缓存 TTL(资产在 Cloudflare 边缘网络上缓存的时间量)。
- 电子邮件混淆 –启用或禁用 Cloudflare 的电子邮件混淆脚本,该脚本通过扰乱电子邮件地址来减少成功的机器人抓取。
- 转发 URL –创建到另一个 URL 的 301 或 302 重定向。
- IP 地理位置标头 –启用或禁用 Cloudflare 的 IP 地理位置 HTTP 标头。
- 机会加密——允许客户端通过安全的 TLS 通道访问 HTTP URL。
- 源缓存控制 –指定您希望 Cloudflare 如何响应源服务器的“Cache-Control”指令。
- Rocket Loader –在匹配的 URL 上启用或禁用 Rocket Loader。
- 安全级别 —指定匹配的 URL 的安全级别。
- 服务器端排除 –启用或禁用 Cloudflare 的“服务器端排除”功能,该功能可让您通过将 HTML 包装在
<!--sse-->
标签中来隐藏可疑流量中的敏感信息。 - SSL –为匹配的 URL 指定 SSL 级别(禁用、灵活、完全或完全严格)。