使用技巧

如何为WordPress配置Cloudflare设置

通过充当网站前面的反向代理,Cloudflare是一种多合一的安全性和性能产品,全球超过12%的网站都在使用它。作为WordPress用户,向您的网站添加Cloudflare可以帮助提高网站性能并减少恶意机器人和黑客的影响。

#js-mykinsta-video {
背景图片:url(https://kinsta.com/wp-content/themes/kinsta/images/[email protected]);
}

免费试用

怎么样?

正确配置后,对您站点的所有请求都将首先到达Cloudflare服务器,该服务器将确定是将请求转发到原始服务器,从缓存中提供服务,阻止还是使用自定义规则进行处理。

在本指南中,我们将对WordPress的最佳Cloudflare设置进行更深入的研究,重点介绍Kinsta DNS和Cloudflare DNS之间的区别,讨论缓存和安全设置,并向您展示如何为WordPress多站点安装配置Cloudflare。

Kinsta DNS与Cloudflare DNS

在深入研究Cloudflare设置以及如何为您的WordPress网站正确调整它们之前,让我们先谈一下Kinsta DNS和Cloudflare DNS之间的区别。 Kinsta DNS是我们所有计划中包含的高级DNS服务,由Amazon的Route53提供支持。 Route53是企业级DNS服务,可提供快速而可靠的解析。

就性能和正常运行时间而言,Cloudflare DNS和Kinsta DNS是可比的-两者都是出色的服务。两种服务之间的主要区别是Cloudflare的其他安全性和性能功能。 Kinsta DNS纯粹是DNS解决方案,而Cloudflare提供DNS以及充当防火墙,CDN等的可选代理层。

如果您是正在寻找仅DNS服务的Kinsta客户,则Kinsta DNS是理想的选择。另一方面,如果您正在寻找基于代理的多合一产品,则Cloudflare是一个不错的选择。

如何为WordPress配置Cloudflare设置

Cloudflare提供了多种安全性和性能优势,但并非所有优势都与WordPress完全兼容。让我们深入了解Cloudflare的设置,以确定适用于WordPress网站的最佳功能。

SSL协议

Cloudflare支持SSL / TLS加密的四种模式-关闭,灵活,完全和完全(严格)。

  • 关–不加密。

  • 灵活–仅加密浏览器和Cloudflare之间的连接。

  • 完全–端到端加密,但允许在原始服务器上使用自签名证书。

  • Ful(严格)–端到端加密,并且需要Cloudflare的免费原始证书或受信任的CA(证书颁发机构)的证书。我们建议使用完全(严格)SSL模式以获得最大的安全性。

对于希望在其WordPress网站上使用Cloudflare的Kinsta客户,我们建议在MyKinsta中生成一个免费的Let’s Encrypt SSL证书,并在Cloudflare中使用“完全”或“完全(严格)”选项。

或者,您也可以生成Cloudflare原始证书以安装在原始服务器上。如果主机不提供免费的SSL证书,则在服务器上安装Cloudflare原始证书将允许您使用完全(严格)SSL模式。

如果您使用Kinsta在子域上托管网站,而根域在使用Cloudflare的Flexible SSL,则可以使用Cloudflare页面规则来强制Kinsta托管的子域使用完全或完全(严格)SSL。

使用Cloudflare页面规则为子域启用完全(严格)SSL。

使用Cloudflare页面规则为子域启用完全(严格)SSL。

此选项可让您使用Cloudflare的灵活SSL,同时确保针对Kinsta托管的子域的Cloudflare完全(严格)SSL。

一律使用HTTPS

我们建议启用此选项以将所有HTTP请求自动转发到HTTPS。

HSTS

HSTS代表“ HTTP严格传输安全性”,用于强制Web浏览器使用安全的HTTPS连接。在Cloudflare上启用HSTS可确保HTTP请求永远不会到达您的原始服务器。如果您的站点已设置为使用HTTPS,则建议您也在源服务器上配置HSTS。

最低TLS版本

TLS(传输层安全性)是一种加密协议,允许通过网络安全地传输数据。默认情况下,Cloudflare为协议版本设置TLS 1.0。出于合规性目的,某些安全标准(例如PCI DSS 3.2)要求使用TLS协议的最新版本。如果您的站点需要特定的TLS版本,则可以通过转到SSL / TLS>边缘证书>最低TLS版本来更改设置。

自动HTTPS重写

此功能检查HTML代码中的HTTP资源URL,以查看它们是否可以通过HTTPS访问。如果是这样,它们将自动使用HTTPS变体进行重写。自动HTTPS重写对于确保安全的浏览体验而不会出现混合内容错误很有用。

借助正确的Cloudflare设置确保您的网站安全safe在此综合指南中了解更多?

点击鸣叫

速度

与性能相关的大多数Cloudflare设置(例如资产最小化和图像优化)可以在“速度”标签中找到。

图像调整大小(仅限企业)

Cloudflare的图像调整大小功能仅适用于业务计划用户。在您的WordPress主题中正确实现后,此功能可用于将生成的图像缩略图卸载到Cloudflare。与WordPress中的内置缩略图生成功能相比,它具有多个优点。

对于动态动态生成图像大小的网站,使用Cloudflare的图像调整大小功能可以减少CPU使用率–这使您的网站可以为更多的并发用户提供服务,而不会增加CPU资源。调整Cloudflare图像的大小还有助于减少磁盘空间使用,因为不必将缩略图存储在服务器上。

Cloudflare图像调整大小的工作原理是在图像之前添加端点。看下面的示例,该示例显示了该功能的工作原理。

原始图片网址

https://yourdomain.com/wp-content/uploads/2020/01/picture.jpg

调整大小的图片网址

https://yourdomain.com/cdn-cgi/image/fit=contain,format=auto,metadata=none,onerror=redirect,quality=70,width=720/https://yourdomain.com/wp-content/上传/2020/01/picture.jpg

可以调整“ width”参数以动态生成不同的缩略图大小,而无需在源服务器上增加任何其他资源。如果您正在寻找类似于Cloudflare图像大小调整功能的独立服务,则Imgix和Cloudinary是不错的选择。

不要忘记查看我们关于优化网络图像的深入指南。

波兰语(仅限专业人士)

Cloudflare Polish是一种图像优化服务,可自动压缩JPG,PNG,GIF和其他图像文件。图片是在Cloudflare的边缘进行处理的,这意味着托管WordPress网站的服务器没有性能负担。波兰语还支持Google的WEBP格式-这意味着经过优化的WEBP图像将自动提供给Chrome,Brave和其他支持该格式的浏览器。

出于某些原因,波兰语是WordPress网站有用的功能。如果您使用的图像优化插件如ShortPixel或Imagify,波兰语可以大大降低服务器的CPU使用率-这可以为访问者带来更稳定的浏览体验。由于波兰语优化的图像是在服务器外存储和缓存的,因此您不必担心会占用磁盘空间来存储图像的WEBP版本。

自动缩小

Cloudflare的自动缩小功能会自动缩小缓存的CSS,JSS和HTML资产。如果您不使用诸如Autoptimize或WP-Rocket之类的WordPress插件来缩小资产,我们建议在Cloudflare中启用自动缩小功能。

布罗特利

Brotli是GZIP的替代方案,GZIP是一种压缩算法,可在将Web请求提供给访问者之前减小其大小。与GZIP相比,Brotli提供了更高的压缩率,从而为用户带来了更快的页面加载速度。问题是,并非所有的Web浏览器都支持Brotli压缩。无论如何,我们建议启用Cloudflare的Brotli功能,因为来自不受支持的浏览器的请求将仅回落到GZIP压缩。

使用WordPress,我们的流量增长了1,187%。
我们将向您展示如何。
加入20,000多个其他人,他们每周都会收到有关WordPress内部技巧的新闻!

          现在订阅
        
        
          
            
            成功!感谢您的订阅

您将在一周内收到下一期的Kinsta新闻通讯。

订阅Kinsta新闻通讯
        
  
    
      

    
      
        订阅
    
  
  
    

我同意条款和条件以及隐私政策

  

      

增强的HTTP / 2优先级(仅限Pro)

HTTP / 2的引入通过并行化和多路复用大大提高了网站的性能。 Cloudflare增强的HTTP / 2优先级排序功能通过智能地解析您网站的HTML来确定加载资产的顺序,以实现最佳性能,从而使这一步骤更进一步。根据Cloudflare的说法,增强的HTTP / 2优先级可以将页面加载时间最多减少50%。

幻影(仅限专业人士)

Mirage是一种针对移动和低带宽连接的图像优化功能。启用Mirage后,在初始页面加载期间,图像将被低分辨率的占位符替换。页面加载后,全分辨率图像将被延迟加载。

Mirage还能够将多个图像请求合并为一个请求,从而减少了完全加载页面所需的往返次数。如果您的站点使用大量图像并针对大量移动人口,那么Cloudflare Mirage可能会对性能产生积极影响。

火箭装载机

Rocket Loader是一项功能,可通过异步加载JavaScript资源来加快加载时间。这样可以有效减少页面的渲染阻止内容,从而缩短页面加载时间。我们建议您在启用了Rocket Loader的情况下测试您的网站,看看它是否可以提高页面速度。如果您的WordPress网站依赖于按特定顺序加载JavaScript资产,则可以通过在脚本标签中添加data-cfasync =“ false”属性来绕过Rocket Loader。

快取

默认情况下,Cloudflare缓存静态资产,例如CSS,JS和图像文件。请注意,默认情况下,Cloudflare不会缓存您网站生成的HTML。

缓存级别

我们建议将缓存级别保留为“标准”,以允许使用唯一的查询字符串访问资产的更新版本。

浏览器缓存过期

对于Kinsta托管的网站,我们建议将浏览器缓存过期设置设置为“尊重现有标题”。这会将静态资产在浏览器缓存中保留一年。如果您想以更短的有效时间来替代此设置,请随时更改此设置。

防火墙功能

在Kinsta上,我们使用Google Cloud Platform的企业级防火墙来保护WordPress网站免受恶意流量的侵害。 Kinsta客户可以使用MyKinsta仪表板中的IP Deny工具来阻止特定的IP地址,而我们的支持团队可以添加更复杂的防火墙规则(如国家/地区级别的阻止)。

如果您的主机未提供可自定义的防火墙,则Cloudflare的免费计划包括一个基本防火墙,该防火墙允许五个自定义规则。可以将防火墙规则配置为阻止特定的IP地址,用户代理,请求方法,HTTP引荐来源甚至国家。

例如,如果您发现自己的WooCommerce商店收到了来自目标市场以外国家/地区的大量假订单,则可以使用Cloudflare的免费防火墙阻止来自整个国家/地区的流量。

Cloudflare的Pro计划具有更强大的Web应用程序防火墙(WAF)。 WAF提供专门的托管规则集,有助于进一步保护您的站点。例如,有一些针对WordPress和PHP网站的规则集。

适用于WordPress的Cloudflare管理的规则集。

适用于WordPress的Cloudflare托管规则集。

对于大多数WordPress网站而言,Cloudflare的免费计划提供的安全级别已足够。但是,如果您正在运行的任务关键型业务站点需要更多保护,则Cloudflare的专业级WAF和托管规则集可以帮助进一步保护您的站点。

(建议阅读:Sucuri vs Wordfence)

网络

在Cloudflare的“网络”设置中,我们建议启用HTTP / 2,HTTP / 3(带有QUIC)和0-RTT连接恢复。

如前所述,HTTP / 2通过并行化和多路复用对HTTP / 1.1进行了一些改进。同样,HTTP / 3通过使用称为QUIC的基于UDP的新协议而不是传统的TCP进一步扩展了HTTP / 2的性能。

网络标签中的WordPress的Cloudflare设置。

启用HTTP / 2,HTTP / 3和0-RTT连接恢复。

安全的HTTP / 3连接还可以从优化的握手例程中受益,该例程可以缩短连接时间。在Cloudflare仪表板中启用HTTP / 3后,受支持的客户端将能够使用HTTP / 3连接到Cloudflare服务器。

最后,Cloudflare的0-RTT连接恢复功能可缩短以前连接到您网站的访问者的加载时间。

页面规则

Cloudflare的页面规则功能可让您自定义特定URL的设置。页面规则可用于禁用某些资产的缓存,更改所选页面的安全级别等。页面规则最流行的用例之一是将Cloudflare配置为“缓存所有内容”。

使用Cloudflare页面规则缓存HTML

Cloudflare仅缓存CSS,JS和图像文件等静态资产。为了安全起见,Cloudflare默认情况下不缓存HTML。 WordPress和其他基于CMS的网站是动态的,因为它们需要在安全的后端环境中进行管理。启用HTML缓存后,这些安全的后端页面将被缓存并显示给任何用户-登录或注销。

在Cloudflare中添加页面规则。

在Cloudflare中添加页面规则。

可以通过添加带有覆盖整个网站的通配符的页面规则来配置Cloudflare的“缓存所有内容”设置:* kinstalife.com / *启用“全部缓存”功能后,Cloudflare将在其数据中心网络中缓存您网站的HTML页面世界。

启用了“缓存所有内容”的网站-请注意cf-cache-status标头。

启用了“缓存所有内容”的网站-请注意cf-cache-status标头。

通常,除非您的站点是静态站点,否则我们不建议您将Cloudflare配置为缓存所有内容。例如,由静态网站生成器(如Gatsby和Hugo)生成的大多数网站没有动态功能,这些功能可能会因全页缓存而中断。

绕过Cookie的缓存

话虽如此,绝对有可能配置Cloudflare设置以缓存WordPress网站上的所有内容。 Cloudflare的业务计划可让您创建绕过特定Cookie缓存的页面规则。

通过调整Cloudflare设置以绕过WordPress的wordpress_logged_in cookie,将不会缓存已登录的请求。同样,对于WooCommerce网站,绕过woocommerce_items_in_cart和wp_woocommerce_session_之类的Cookie的缓存也很有用。

指定缓存控制标头

选择性绕过Cloudflare缓存的另一种方法是在满足特定条件时使用PHP添加缓存控制响应标头。为使此方法起作用,您需要在“全部缓存”页面规则中启用原始缓存控制。

在Cloudflare页面规则中启用原始缓存控制。

在Cloudflare页面规则中启用原始缓存控制。

启用原始缓存控制将迫使Cloudflare尊重Web服务器(例如Nginx)和服务器端应用程序(例如PHP和WordPress)的响应标头。为了防止Cloudflare缓存某些页面,可以将以下响应标头添加到WordPress主题模板文件中。或者,也可以将代码修改为在您的functions.php文件中工作。

如果将此代码添加到single.php文件的顶部,Cloudflare将不会缓存您的单个帖子和页面。此代码也可以包装在逻辑语句中,以在某些条件下触发。例如,将此代码与is_user_logged_in()函数一起使用将确保Cloudflare不缓存已登录用户的页面。

作为示例,我们将以下代码添加到header.php文件中。当用户登录时,此PHP代码将为我们的所有页面添加缓存控制和编译指示响应标头。

检查登录请求的响应头,我们看到了。

缓存控制:不存储,不缓存,必须重新验证,最大年龄= 0
缓存控制:检查后= 0,检查前= 0
CF缓存状态:BYPASS
CF-射线:588140b43a4f74a7-IAD
cf-request-id:0244a6c4a0000074a7bdb0e200000001
连接:保持活动状态
内容编码:gzip
内容类型:text / html;字符集= UTF-8
日期:2020年4月22日,星期三18:01:54 GMT
过期:格林尼治标准时间1984年1月11日星期三05:00:00
链接: ; rel =“ https://api.w.org/”
语法:无缓存
服务器:cloudflare
传输编码:分块
有所不同:接受编码
X-Content-Type-Options:nosniff
X-Kinsta缓存:BYPASS

与注销的用户查看同一页面会产生这些响应标题。

世界上一些最大的品牌和行业都依赖Kinsta的企业WordPress托管。从初创公司到代理商,再到《财富》 500强公司。准备开始了吗?查看我们的计划

年龄:5
CF缓存状态:HIT
CF-射线:5881420dad7d74a7-IAD
cf-request-id:0244a79c8d000074a7bd820200000001
连接:保持活动状态
内容编码:gzip
内容类型:text / html;字符集= UTF-8
日期:2020年4月22日,星期三18:02:49 GMT
链接: ; rel =“ https://api.w.org/”
服务器:cloudflare
传输编码:分块
有所不同:接受编码
X-Content-Type-Options:nosniff
X-Kinsta缓存:BYPASS

如您所见,这里有一个CF-Cache-Status:HIT标头,指示该页面正在从Cloudflare的缓存中提供。

如果您有兴趣为您的WordPress网站设置“缓存所有内容”功能,我们建议与具有Cloudflare和WordPress经验的开发人员合作,确定基于cookie的绕过还是服务器端缓存控制标头生成是更好的选择为您的WordPress网站。

在某些情况下,这两种方法可能需要同时实施。

Cloudflare Argo和Railgun

Cloudflare提供了其他性能产品,这些产品可能有助于进一步提高WordPress网站的性能。这些功能需要支付额外费用,但如果您想进一步优化网站,可能值得一看。

Argo

Argo是一项Cloudflare附加服务,可为您的网站提供“智能路由”。启用Argo后,流量将绕过Cloudflare网络中的拥挤区域。在我们的测试中,Argo将页面加载时间减少了20-30%。如果您是Cloudflare用户,希望在性能优化方面付出更多努力,那么尝试Argo可能会产生积极的结果。

轨道炮

Cloudflare的Railgun是WAN产品,可在您的服务器和Cloudflare的服务器之间建立安全的隧道。 Railgun旨在通过仅交付请求之间的总体差异来加快未缓存内容的交付。例如,如果页面A和页面B具有相同的页眉和页脚结构,但正文内容不同,Railgun将意识到这一点,并且仅通过高度压缩的二进制数据流来提供区别。

Railgun仅在Cloudflare的业务和企业计划中可用,并且需要您的虚拟主机在站点的服务器上安装其他软件。对于大多数用户而言,使用Cloudflare保持快速加载时间不是必需的Railgun加速。但是,如果您经营的是流量旺盛的WooCommerce商店或论坛,且无法缓存,那么Railgun可能会帮助您提高网站速度。

Cloudflare WordPress插件

Cloudflare团队维护一个官方WordPress插件。尽管此插件不是绝对必要的,但它确实提供了一些不错的功能,包括WordPress优化的Cloudflare设置,WordPress特定的安全规则集,自动缓存清除,HTTP / 2服务器推送等。

对于高级用户,我们建议不要安装插件,并在Cloudflare仪表板中配置设置,以防止与自定义页面规则冲突。

如何为WordPress多站点配置Cloudflare设置

如果将Cloudflare与WordPress多站点一起使用,则在设置时应考虑一些特殊注意事项。

SSL设置

为了展示适用于WordPress多站点的Cloudflare SSL设置,我们创建了一个测试子域多站点,因为如果您使用子目录多站点,则不会遇到任何SSL问题。

这是我们的测试子域WordPress多站点的结构:

  • 主站点– brianwp.com和www.brianwp.com
  • 子站点1 – site1.brianwp.com
  • 子网站2 – site2.brianwp.com

在MyKinsta中,我们为多站点添加了域。

MyKinsta中的多站点域。

MyKinsta中的多站点域。

同样,在Cloudflare中为域配置了正确的A记录。如橙色云图标所示,Cloudflare代理也已启用。

WordPress多站点的Cloudflare DNS记录。

WordPress多站点的Cloudflare DNS记录。

要在完全(严格)SSL模式下使用Cloudflare,原始服务器的SSL证书上必须存在所有关联的域。有两种方法可以做到这一点。

让我们加密或付费SSL

如果您的主机支持免费的Let’s Encrypt SSL,请继续并生成一个涵盖您所有多站点域的SSL证书。

在Kinsta上,使用MyKinsta仪表板中的“让我们加密”工具可以轻松生成涵盖所有域的SSL证书。

为MyKinsta中的多站点生成SSL证书。

为MyKinsta中的多站点生成SSL证书。

Cloudflare来源SSL证书

或者,您可以生成一个涵盖您的多站点域的Cloudflare来源SSL证书。要生成原始证书,请导航至SSL / TLS>原始服务器,然后单击“创建证书”。

生成Cloudflare原始证书。

生成Cloudflare原始证书。

原始证书生成菜单分为三个部分。在第一部分中,选择“让Cloudflare生成私钥和CSR”,除非有特殊原因需要提供自己的凭据。

在第二部分中,键入SSL证书需要涵盖的域和子域。您只能为Cloudflare帐户中的域生成证书。

最后,在第三部分中,选择证书有效期。

设置包含所有多站点域的适当SSL证书后,您将可以在建议的完全(严格)SSL模式下使用Cloudflare。如果将来需要在您的多站点中添加其他域或子域,请确保生成一个涵盖其他域的新SSL证书。

WordPress多站点的页面规则

Cloudflare的其他安全性和性能功能全局适用于您根域下的所有子域。换句话说,如果为我们的主网站brianwp.com启用了CSS缩小功能,那么site1.brianwp.com和site2.wpbrianli.com也将启用CSS缩小功能。

在某些情况下,这种默认行为可能会导致问题。例如,您可能不希望仅由于与单个子网站不兼容而全局禁用HTML,CSS和JS优化。要解决此问题,您可以使用自定义页面规则来有选择地禁用特定子域的功能。

在下面的示例中,我们设置了一个针对* site2.brianwp.com / *的页面规则。 *字符用于指定通配符行为。您可以将*视为“此处的所有内容”。

对于此页面规则,我们禁用了HTML,CSS和JS的自动缩小功能,禁用了Rocket Loader,绕过了Cloudflare缓存,并关闭了HTTPS自动重写功能。

创建选择性Cloudflare页面规则以WordPress子网站为目标。

创建选择性Cloudflare页面规则以WordPress子网站为目标。

如果您使用的是Cloudflare的免费计划,请注意,它仅随附三个页面规则。如果您需要对多个子网站进行选择性调整,则需要升级到Pro计划或购买其他页面规则。

想要提高网站性能并减少?bot和?‍♀️黑客吗?这些Cloudflare设置非常适合#WordPress用户!

点击鸣叫

摘要

了解如何为您的WordPress网站配置Cloudflare设置以及如何与托管堆栈正确集成可以对您的网站速度和安全性产生积极影响。

无论您是一家单人商店还是拥有数百名客户的全方位服务代理商,Cloudflare都是一项安全性和性能服务,可提供巨大的价值。当与WordPress正确配对并以超快的速度与主机配对时,乐趣就从此开始!

如果您喜欢这篇文章,那么您会喜欢Kinsta的WordPress托管平台。加速您的网站并获得我们经验丰富的WordPress团队的24/7支持。我们基于Google Cloud的基础架构专注于自动扩展,性能和安全性。让我们向您展示Kinsta的与众不同!查看我们的计划