Cloudflare:提升网站速度和安全性的全面指南
Cloudflare,源于蜜罐项目(Project Honeypot),是一个提供DDoS检测和防护服务的提供商,它能减轻服务器压力并加快网站速度。它还提供“始终在线”选项,在源服务器出现故障时提供网站的简化版本。
Cloudflare的独特之处在于,它并非一开始就作为加速/性能工具,而是源于旨在提供垃圾邮件和黑客防护服务的蜜罐项目。时至今日,DDoS检测和防护仍然是Cloudflare的主要卖点之一。其算法会记录访问者的IP地址、有效负载、请求资源和请求频率,以检测恶意访问者。
由于Cloudflare位于网站和所有传入流量之间的代理位置,它能够显着减轻服务器的压力,以至于DDoS攻击甚至无法到达原始网站,正如引言中所述。 Cloudflare还提供“始终在线”选项,该选项会缓存用户网站的一个版本,并在源服务器出现故障(原始网站返回5xx或4xx错误)时提供该网站的简化版本。它还具有完整的页面缓存功能。
这些功能具有巨大的优势:它们可以挽救在高负载下苦苦挣扎的Web服务器,并且在服务器发生错误的情况下,可以为开发人员提供喘息的空间来解决问题。
Cloudflare还提供免费服务。当然,也有高级套餐,有些功能(如附加页面规则)需要付费,但仅Cloudflare免费层的范围就足以使其值得学习其优缺点。对比基准测试表明,Cloudflare在速度方面处于中等水平,但很难说它是市场上性价比最高的CDN。
Cloudflare设置
使用Cloudflare设置网站非常简单。在https://www.php.cn/link/6f7bc4baeb295716fa1dbbf64887fcff注册后,我们可以添加一个新网站。当系统扫描给定域的IP和其他详细信息时,我们会看到一个介绍性视频。完成后,我们会得到新的域名服务器,需要在我们的注册商处设置。
我们需要在我们的注册商处注册这些域名服务器,并等待更改在互联网上传播。这可能需要长达24小时。
此更改意味着将我们对域的所有控制权交给Cloudflare。这也意味着,如果我们在该域上拥有电子邮件(MX记录),我们需要将这些记录转移到Cloudflare。如果我们有任何子域,也需要在Cloudflare的仪表板中将其设置为相应的A记录。
所有在我们的域名注册商或托管提供商处设置的现有域名记录都需要移动/复制到Cloudflare。
一些托管服务提供商可能会进一步简化/自动化此转换过程。
对于我们的每个域名记录,我们可以选择简单地让所有流量直接通过我们的服务器——这意味着我们可以为某些子域设置例外——或者我们可以关闭所有Cloudflare功能——例如,当我们在网站上进行一些更改时。
一旦我们设置了域,基本上就是在Cloudflare仪表板之外所需的所有工作。在网站本身或源服务器上无需再执行任何操作。所有进一步的调整都在Cloudflare网站上完成。
加密设置
SSL证书是Cloudflare免费计划的一部分。有四种SSL设置选项,我们可以在仪表板的“加密”选项卡下找到它们。
使用这些设置,我们需要确保设置合理,因为我们在最终用户和服务器内容之间有两层,因此这里的遗漏会导致重定向循环,或者过多的重定向最终会减慢网站速度。
Cloudflare还提供购买自定义证书的选项,对于需要额外安全或关心其市场形象的高级用户,它提供了上传自定义/高级证书的选项。这是高级计划的一部分。
网站安全
这是Cloudflare闪光的一个领域:它提供了前所未有的免费价值。在整个托管领域,DDoS防护是一项高级服务,即使对于付费客户也并非总是提供。
Cloudflare在免费层提供无限的DDoS防护,以及其他一些相当复杂的工具,这些工具可以在恶意流量到达之前就在基础设施级别保护网站。它提供速率限制——根据用户定义的、可自定义的规则来限制访问。它提供智能防火墙规则、国家/地区阻止、浏览器完整性检查、验证码保护等等。
如今,当僵尸网络统治互联网,新安装的网站或服务器有时会在上线几分钟内被暴力破解尝试淹没时,当垃圾邮件发送者自动执行Web评论,并且即使没有任何入侵,推荐者垃圾邮件也很猖獗时,利用非常规手段的POST攻击和缓慢攻击并不罕见。这种保护可以成败小型或中型网站。
还有抓取保护,拒绝向某些访问者配置文件提供某些资源,或混淆电子邮件。
高级套餐提供更多选项。
速度和性能
默认情况下,使用Cloudflare,我们可以缓存静态内容——JavaScript、字体、样式表,甚至图像。我们可以设置缓存到期规则。对于各种CMS系统,有一些插件可以连接到Cloudflare,以便我们可以在网站内部清除缓存。
这些静态资源在DNS设置后由Cloudflare的基础设施“接管”,然后根据访问者的位置从其遍布全球的数据中心网络提供服务。
资源可以根据查询字符串或我们的源服务器设置的缓存头进行缓存(或从源获取)。例如,在PHP中,我们可以像这样设置缓存到期:
<code>header('Cache-Control: max-age=3600');</code>
如果这还不够,我们可能需要删除Pragma、Expires和Cache Control标头:
<code>header_remove('Pragma'); header_remove('Expires'); header_remove('Cache-Control');</code>
我们也可以在服务器级别执行此操作。在nginx中,我们将在虚拟主机块/文件中设置这些规则:
<code>if ($http_cookie ~* "some-cookie") { #removing headers that stop Cloudflare cloudflare from caching more_clear_headers 'Pragma'; more_clear_headers 'Expires'; more_clear_headers 'Cache-Control'; add_header Cache-Control "no-cache, no-store, max-age=0"; } location ~* "(!?.*some-url-path.*)" { #removing headers that stop Cloudflare cloudflare from caching more_clear_headers 'Pragma'; more_clear_headers 'Expires'; more_clear_headers 'Cache-Control'; add_header Cache-Control "max-age=3600"; }</code>
Apache用户会在他们的.htaccess文件中添加类似这样的内容:
<code><ifmodule> mod_headers.c></ifmodule> Header unset Pragma env=LONGCACHE Header unset Expires env=LONGCACHE Header set Cache-Control "max-age=3600" env=LONGCACHE</code>
显然,上面的some-cookie和some-url-path需要替换为正确的数值。这些规则对于下面提到的页面缓存也是必需的。
我们可以选择压缩我们的CSS、JS和HTML。有一个选项可以利用AMP进行传出的AMP链接。还有一个beta功能Rocket Loader,它使用浏览器的本地存储异步捆绑和提供JS。但是,要小心这一点,因为加载资源顺序中的小错误可能会破坏您的网站。
付费客户可以使用Railgun功能,该功能解决了缓存系统的主要痛点——动态内容。它试图加快从源服务器交付动态内容的速度。它需要在源服务器上安装软件,并通过压缩交付的内容和“为多个同时请求维护单个持久连接,消除网络连接延迟”来工作。这让人想起HTTP/2协议的多路复用功能——只是在这里,在源服务器和Cloudflare之间。
Pro计划还有图像压缩/优化,以及波兰语和Mirage机制。在“流量”选项卡下,有跨Cloudflare全球数据中心的Argo路由优化和负载平衡选项。
全页HTML缓存
全页缓存意味着缓存我们系统的全部输出——CMS、应用程序、博客系统或任何其他内容。
在“页面规则”下,有一个隐藏的宝石,可以将您的Cloudflare帐户转换为一个完整的缓存系统,可以与Varnish等专业解决方案竞争——并且由于全球数据中心——可能超过它。
将缓存级别规则设置为缓存所有内容将缓存网站的整个HTML内容以及所有其他资源。
通过对这些规则进行排序,我们可以实现复杂的缓存/排除解决方案,并以最小的延迟交付甚至动态生成的内容。15倍的首次字节时间(TTFB)改进并非闻所未闻。
这些规则支持通配符,需要按优先级排序:
<code>header('Cache-Control: max-age=3600');</code>
如果我们将此规则与下一个图像中的Bypass设置结合使用,我们可以区分需要在不同条件下缓存/从缓存中省略的网站部分——例如管理部分等。
如果页面缓存正在工作,我们应该在浏览器检查器的响应标头中看到CF-Cache-Status: HIT。
付费客户有其他缓存选项,或者根据cookie绕过缓存。在这里,cookie名称可以使用通配符设置,内容也可以根据设备类型进行缓存。
这些规则更复杂,并非每种类型的网站都需要。免费客户可以使用三个页面规则,但可以购买额外的规则。
HTTP/2和服务器推送
默认情况下,免费和企业客户都可以使用HTTP/2——对HTTP/1.1协议的重大改进——其中包括:
虽然认识到需要根据具体情况来判断Cloudflare的改进和价值,但公平地说,总的来说,Cloudflare提供的价值(特别是其免费层)稳固地高于平均水平。
结论
本文介绍了如何使用和配置Cloudflare与网站,使其快速、可靠且防DDoS。这并不是说CDN网站是不可渗透的。事实上,它带来了新的漏洞。
当人为错误导致Cloudflare服务在2016年瑞典Telia网络提供商案例中受损时,这对欧洲互联网来说是一个重大问题。据估计,全球排名前100万的网站中有6.2%使用Cloudflare服务。
无论如何,我们不应该因为这样的事件而害怕CDN。它们很少见,最终有助于构建一个更加强大的网络。
关于使用Cloudflare使您的网站更快更安全的常见问题解答
Cloudflare是一家网络基础设施和网站安全公司,提供内容交付网络服务、DDoS缓解、互联网安全和分布式域名服务器服务。它的工作原理是保护和加速任何在线网站。一旦您的网站成为Cloudflare社区的一部分,其网络流量就会通过其智能全球网络进行路由。它们会自动优化网页的交付,以便您的访问者获得最快的页面加载时间和最佳性能。
Cloudflare通过其内容交付网络 (CDN) 增强网站的速度。CDN是位于世界各地的服务器网络,缓存网站的静态内容,例如图像和CSS/JavaScript文件。当用户访问您的网站时,静态内容会从最近的CDN服务器交付,从而减少加载时间。
Cloudflare保护您的网站免受各种威胁,包括SQL注入、DDoS攻击和跨站点脚本攻击。它使用一系列安全技术,包括Web应用程序防火墙 (WAF)、安全SSL和全球CDN来保护您的网站。
Cloudflare提供一系列计划以满足不同的需求。这些包括免费计划、专业计划、商业计划和企业计划。每个计划都提供不同的功能和支持级别,企业计划提供最全面的功能集。
Cloudflare的图像优化功能(称为Polish)会减小图像的文件大小,以提高页面加载时间。它提供两种模式:无损模式,在不更改图像的情况下减小文件大小;有损模式,通过删除一些图像数据来减小文件大小。
Cloudflare的移动优化(称为Mirage)旨在提高您的网站在移动设备上的性能。它通过延迟加载图像、合并网络连接以及根据设备提供适当大小的图像来实现此目的。
设置Cloudflare包括创建一个Cloudflare帐户,将您的网站添加到帐户,并将域的域名服务器更新为指向Cloudflare。完成此操作后,Cloudflare将开始缓存您的网站并从其CDN提供服务。
“始终在线”是一项功能,即使您的源服务器出现故障,它也能使您的网站缓存版本保持在线。这意味着即使您的托管提供商存在问题,访问者仍然可以访问您的网站。
Cloudflare的SSL/TLS加密保护数据在您的网站和访问者之间移动时的安全。这可以防止第三方拦截和读取数据,从而增强网站的安全性。
Argo智能路由是一项功能,它通过使用Cloudflare的专用网络通过最不拥塞和最可靠的路径路由访问者来提高网站的性能。这可以减少互联网延迟和数据包丢失,从而改善用户体验。
所有图片均保留原始格式和位置。
以上是使您的网站更快,更安全地使用Cloudflare的详细内容。更多信息请关注PHP中文网其他相关文章!