搜索
首页后端开发php教程使您的网站更快,更安全地使用Cloudflare

Cloudflare:提升网站速度和安全性的全面指南

Cloudflare,源于蜜罐项目(Project Honeypot),是一个提供DDoS检测和防护服务的提供商,它能减轻服务器压力并加快网站速度。它还提供“始终在线”选项,在源服务器出现故障时提供网站的简化版本。

Making Your Website Faster and Safer with Cloudflare

Cloudflare的独特之处在于,它并非一开始就作为加速/性能工具,而是源于旨在提供垃圾邮件和黑客防护服务的蜜罐项目。时至今日,DDoS检测和防护仍然是Cloudflare的主要卖点之一。其算法会记录访问者的IP地址、有效负载、请求资源和请求频率,以检测恶意访问者。

由于Cloudflare位于网站和所有传入流量之间的代理位置,它能够显着减轻服务器的压力,以至于DDoS攻击甚至无法到达原始网站,正如引言中所述。 Cloudflare还提供“始终在线”选项,该选项会缓存用户网站的一个版本,并在源服务器出现故障(原始网站返回5xx或4xx错误)时提供该网站的简化版本。它还具有完整的页面缓存功能。

Making Your Website Faster and Safer with Cloudflare

这些功能具有巨大的优势:它们可以挽救在高负载下苦苦挣扎的Web服务器,并且在服务器发生错误的情况下,可以为开发人员提供喘息的空间来解决问题。

Cloudflare还提供免费服务。当然,也有高级套餐,有些功能(如附加页面规则)需要付费,但仅Cloudflare免费层的范围就足以使其值得学习其优缺点。对比基准测试表明,Cloudflare在速度方面处于中等水平,但很难说它是市场上性价比最高的CDN。

Cloudflare设置

使用Cloudflare设置网站非常简单。在https://www.php.cn/link/6f7bc4baeb295716fa1dbbf64887fcff注册后,我们可以添加一个新网站。当系统扫描给定域的IP和其他详细信息时,我们会看到一个介绍性视频。完成后,我们会得到新的域名服务器,需要在我们的注册商处设置。

Making Your Website Faster and Safer with Cloudflare

我们需要在我们的注册商处注册这些域名服务器,并等待更改在互联网上传播。这可能需要长达24小时。

此更改意味着将我们对域的所有控制权交给Cloudflare。这也意味着,如果我们在该域上拥有电子邮件(MX记录),我们需要将这些记录转移到Cloudflare。如果我们有任何子域,也需要在Cloudflare的仪表板中将其设置为相应的A记录。

所有在我们的域名注册商或托管提供商处设置的现有域名记录都需要移动/复制到Cloudflare。

一些托管服务提供商可能会进一步简化/自动化此转换过程。

Making Your Website Faster and Safer with Cloudflare

对于我们的每个域名记录,我们可以选择简单地让所有流量直接通过我们的服务器——这意味着我们可以为某些子域设置例外——或者我们可以关闭所有Cloudflare功能——例如,当我们在网站上进行一些更改时。

Making Your Website Faster and Safer with Cloudflare

一旦我们设置了域,基本上就是在Cloudflare仪表板之外所需的所有工作。在网站本身或源服务器上无需再执行任何操作。所有进一步的调整都在Cloudflare网站上完成。

加密设置

SSL证书是Cloudflare免费计划的一部分。有四种SSL设置选项,我们可以在仪表板的“加密”选项卡下找到它们。

  • 关闭 – 这不言自明。所有流量都将重定向到不安全的协议(http)。
  • 灵活 – 无论我们服务器的协议是什么,以及我们是否在其上拥有现有的SSL证书,Cloudflare都将通过https向最终访问者提供我们所有的页面。从Cloudflare到源服务器的连接将通过不安全的连接进行。
  • 完全 – Cloudflare将通过https与您的服务器通信,但不会验证源上的证书。从Cloudflare到访问者的流量通过https提供。
  • 完全严格 – Cloudflare将要求源服务器上具有有效的(非自签名)SSL证书。从Cloudflare到访问者的流量通过https提供。

使用这些设置,我们需要确保设置合理,因为我们在最终用户和服务器内容之间有两层,因此这里的遗漏会导致重定向循环,或者过多的重定向最终会减慢网站速度。

Cloudflare还提供购买自定义证书的选项,对于需要额外安全或关心其市场形象的高级用户,它提供了上传自定义/高级证书的选项。这是高级计划的一部分。

网站安全

这是Cloudflare闪光的一个领域:它提供了前所未有的免费价值。在整个托管领域,DDoS防护是一项高级服务,即使对于付费客户也并非总是提供。

Cloudflare在免费层提供无限的DDoS防护,以及其他一些相当复杂的工具,这些工具可以在恶意流量到达之前就在基础设施级别保护网站。它提供速率限制——根据用户定义的、可自定义的规则来限制访问。它提供智能防火墙规则、国家/地区阻止、浏览器完整性检查、验证码保护等等。

如今,当僵尸网络统治互联网,新安装的网站或服务器有时会在上线几分钟内被暴力破解尝试淹没时,当垃圾邮件发送者自动执行Web评论,并且即使没有任何入侵,推荐者垃圾邮件也很猖獗时,利用非常规手段的POST攻击和缓慢攻击并不罕见。这种保护可以成败小型或中型网站。

还有抓取保护,拒绝向某些访问者配置文件提供某些资源,或混淆电子邮件。

高级套餐提供更多选项。

速度和性能

默认情况下,使用Cloudflare,我们可以缓存静态内容——JavaScript、字体、样式表,甚至图像。我们可以设置缓存到期规则。对于各种CMS系统,有一些插件可以连接到Cloudflare,以便我们可以在网站内部清除缓存。

这些静态资源在DNS设置后由Cloudflare的基础设施“接管”,然后根据访问者的位置从其遍布全球的数据中心网络提供服务。

资源可以根据查询字符串或我们的源服务器设置的缓存头进行缓存(或从源获取)。例如,在PHP中,我们可以像这样设置缓存到期:

<code>header('Cache-Control: max-age=3600');</code>

如果这还不够,我们可能需要删除PragmaExpiresCache 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-cookiesome-url-path需要替换为正确的数值。这些规则对于下面提到的页面缓存也是必需的。

我们可以选择压缩我们的CSS、JS和HTML。有一个选项可以利用AMP进行传出的AMP链接。还有一个beta功能Rocket Loader,它使用浏览器的本地存储异步捆绑和提供JS。但是,要小心这一点,因为加载资源顺序中的小错误可能会破坏您的网站。

付费客户可以使用Railgun功能,该功能解决了缓存系统的主要痛点——动态内容。它试图加快从源服务器交付动态内容的速度。它需要在源服务器上安装软件,并通过压缩交付的内容和“为多个同时请求维护单个持久连接,消除网络连接延迟”来工作。这让人想起HTTP/2协议的多路复用功能——只是在这里,在源服务器和Cloudflare之间。

Pro计划还有图像压缩/优化,以及波兰语和Mirage机制。在“流量”选项卡下,有跨Cloudflare全球数据中心的Argo路由优化和负载平衡选项。

全页HTML缓存

全页缓存意味着缓存我们系统的全部输出——CMS、应用程序、博客系统或任何其他内容。

在“页面规则”下,有一个隐藏的宝石,可以将您的Cloudflare帐户转换为一个完整的缓存系统,可以与Varnish等专业解决方案竞争——并且由于全球数据中心——可能超过它。

Making Your Website Faster and Safer with Cloudflare

将缓存级别规则设置为缓存所有内容将缓存网站的整个HTML内容以及所有其他资源。

通过对这些规则进行排序,我们可以实现复杂的缓存/排除解决方案,并以最小的延迟交付甚至动态生成的内容。15倍的首次字节时间(TTFB)改进并非闻所未闻。

这些规则支持通配符,需要按优先级排序:

<code>header('Cache-Control: max-age=3600');</code>

如果我们将此规则与下一个图像中的Bypass设置结合使用,我们可以区分需要在不同条件下缓存/从缓存中省略的网站部分——例如管理部分等。

Making Your Website Faster and Safer with Cloudflare

如果页面缓存正在工作,我们应该在浏览器检查器的响应标头中看到CF-Cache-Status: HIT

付费客户有其他缓存选项,或者根据cookie绕过缓存。在这里,cookie名称可以使用通配符设置,内容也可以根据设备类型进行缓存。

这些规则更复杂,并非每种类型的网站都需要。免费客户可以使用三个页面规则,但可以购买额外的规则。

HTTP/2和服务器推送

Making Your Website Faster and Safer with Cloudflare

默认情况下,免费和企业客户都可以使用HTTP/2——对HTTP/1.1协议的重大改进——其中包括:

  • 多路复用 – 多个资源可以在单个连接内以异步方式发送
  • 标头压缩
  • 服务器推送 – 服务器预测对资源的请求,并在浏览器甚至请求它们之前发送它们。

虽然认识到需要根据具体情况来判断Cloudflare的改进和价值,但公平地说,总的来说,Cloudflare提供的价值(特别是其免费层)稳固地高于平均水平。

结论

本文介绍了如何使用和配置Cloudflare与网站,使其快速、可靠且防DDoS。这并不是说CDN网站是不可渗透的。事实上,它带来了新的漏洞。

当人为错误导致Cloudflare服务在2016年瑞典Telia网络提供商案例中受损时,这对欧洲互联网来说是一个重大问题。据估计,全球排名前100万的网站中有6.2%使用Cloudflare服务。

Making Your Website Faster and Safer with Cloudflare

无论如何,我们不应该因为这样的事件而害怕CDN。它们很少见,最终有助于构建一个更加强大的网络。

关于使用Cloudflare使您的网站更快更安全的常见问题解答

什么是Cloudflare以及它是如何工作的?

Cloudflare是一家网络基础设施和网站安全公司,提供内容交付网络服务、DDoS缓解、互联网安全和分布式域名服务器服务。它的工作原理是保护和加速任何在线网站。一旦您的网站成为Cloudflare社区的一部分,其网络流量就会通过其智能全球网络进行路由。它们会自动优化网页的交付,以便您的访问者获得最快的页面加载时间和最佳性能。

Cloudflare如何使我的网站更快?

Cloudflare通过其内容交付网络 (CDN) 增强网站的速度。CDN是位于世界各地的服务器网络,缓存网站的静态内容,例如图像和CSS/JavaScript文件。当用户访问您的网站时,静态内容会从最近的CDN服务器交付,从而减少加载时间。

Cloudflare如何保护我的网站?

Cloudflare保护您的网站免受各种威胁,包括SQL注入、DDoS攻击和跨站点脚本攻击。它使用一系列安全技术,包括Web应用程序防火墙 (WAF)、安全SSL和全球CDN来保护您的网站。

Cloudflare提供哪些不同的计划?

Cloudflare提供一系列计划以满足不同的需求。这些包括免费计划、专业计划、商业计划和企业计划。每个计划都提供不同的功能和支持级别,企业计划提供最全面的功能集。

Cloudflare的图像优化如何工作?

Cloudflare的图像优化功能(称为Polish)会减小图像的文件大小,以提高页面加载时间。它提供两种模式:无损模式,在不更改图像的情况下减小文件大小;有损模式,通过删除一些图像数据来减小文件大小。

Cloudflare的移动优化如何工作?

Cloudflare的移动优化(称为Mirage)旨在提高您的网站在移动设备上的性能。它通过延迟加载图像、合并网络连接以及根据设备提供适当大小的图像来实现此目的。

如何为我的网站设置Cloudflare?

设置Cloudflare包括创建一个Cloudflare帐户,将您的网站添加到帐户,并将域的域名服务器更新为指向Cloudflare。完成此操作后,Cloudflare将开始缓存您的网站并从其CDN提供服务。

什么是Cloudflare的“始终在线”功能?

“始终在线”是一项功能,即使您的源服务器出现故障,它也能使您的网站缓存版本保持在线。这意味着即使您的托管提供商存在问题,访问者仍然可以访问您的网站。

Cloudflare的SSL/TLS加密如何增强网站安全性?

Cloudflare的SSL/TLS加密保护数据在您的网站和访问者之间移动时的安全。这可以防止第三方拦截和读取数据,从而增强网站的安全性。

什么是Cloudflare的Argo智能路由?

Argo智能路由是一项功能,它通过使用Cloudflare的专用网络通过最不拥塞和最可靠的路径路由访问者来提高网站的性能。这可以减少互联网延迟和数据包丢失,从而改善用户体验。

所有图片均保留原始格式和位置。

以上是使您的网站更快,更安全地使用Cloudflare的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
您如何在PHP中创建和使用接口?您如何在PHP中创建和使用接口?Apr 30, 2025 pm 03:40 PM

本文解释了如何创建,实施和使用PHP中的接口,重点关注其对代码组织和可维护性的好处。

crypt()和password_hash()有什么区别?crypt()和password_hash()有什么区别?Apr 30, 2025 pm 03:39 PM

本文讨论了PHP中的crypt()和password_hash()之间的差异,以进行密码哈希,重点介绍其实施,安全性和对现代Web应用程序的适用性。

如何防止PHP中的跨站点脚本(XSS)?如何防止PHP中的跨站点脚本(XSS)?Apr 30, 2025 pm 03:38 PM

文章讨论了通过输入验证,输出编码以及使用OWASP ESAPI和HTML净化器之类的工具来防止PHP中的跨站点脚本(XSS)。

PHP中的自动加载是什么?PHP中的自动加载是什么?Apr 30, 2025 pm 03:37 PM

自动加载PHP会在需要时自动加载类文件,从而通过减少内存使用和增强代码组织来提高性能。最佳实践包括使用PSR-4和有效组织代码。

什么是PHP流?什么是PHP流?Apr 30, 2025 pm 03:36 PM

PHP流通过一致的API统一处理文件,网络插座和压缩格式等资源的处理,从而提高复杂性并增强代码灵活性和效率。

可以使用PHP上传的文件的最大大小是多少?可以使用PHP上传的文件的最大大小是多少?Apr 30, 2025 pm 03:35 PM

本文讨论了在PHP中管理文件上传大小的管理,重点是2MB的默认限制以及如何通过修改PHP.INI设置来增加它。

PHP中的无效类型是什么?PHP中的无效类型是什么?Apr 30, 2025 pm 03:34 PM

本文讨论了PHP 7.1中引入的PHP中的无效类型,允许变量或参数为指定类型或NULL。它突出显示了诸如提高可读性,类型安全性和明确意图的好处,并解释了如何声明

unset()和unlink()函数之间有什么区别?unset()和unlink()函数之间有什么区别?Apr 30, 2025 pm 03:33 PM

本文讨论了unset()和unlink()功能在编程中的差异,重点关注其目的和用例。 unset()从内存中删除变量,而unlink()从文件系统中删除文件。两者都对效率至关重要

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。