目录
什么是Cloudflare以及它是如何工作的?
Cloudflare如何使我的网站更快?
Cloudflare如何保护我的网站?
Cloudflare提供哪些不同的计划?
Cloudflare的图像优化如何工作?
Cloudflare的移动优化如何工作?
如何为我的网站设置Cloudflare?
什么是Cloudflare的“始终在线”功能?
Cloudflare的SSL/TLS加密如何增强网站安全性?
什么是Cloudflare的Argo智能路由?
首页 后端开发 php教程 使您的网站更快,更安全地使用Cloudflare

使您的网站更快,更安全地使用Cloudflare

Feb 08, 2025 am 11:05 AM

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

热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

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

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1663
14
CakePHP 教程
1420
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
说明PHP中的不同错误类型(注意,警告,致命错误,解析错误)。 说明PHP中的不同错误类型(注意,警告,致命错误,解析错误)。 Apr 08, 2025 am 12:03 AM

PHP中有四种主要错误类型:1.Notice:最轻微,不会中断程序,如访问未定义变量;2.Warning:比Notice严重,不会终止程序,如包含不存在文件;3.FatalError:最严重,会终止程序,如调用不存在函数;4.ParseError:语法错误,会阻止程序执行,如忘记添加结束标签。

PHP和Python:比较两种流行的编程语言 PHP和Python:比较两种流行的编程语言 Apr 14, 2025 am 12:13 AM

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1? 说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1? Apr 17, 2025 am 12:06 AM

在PHP中,应使用password_hash和password_verify函数实现安全的密码哈希处理,不应使用MD5或SHA1。1)password_hash生成包含盐值的哈希,增强安全性。2)password_verify验证密码,通过比较哈希值确保安全。3)MD5和SHA1易受攻击且缺乏盐值,不适合现代密码安全。

PHP行动:现实世界中的示例和应用程序 PHP行动:现实世界中的示例和应用程序 Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP:网络开发的关键语言 PHP:网络开发的关键语言 Apr 13, 2025 am 12:08 AM

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

什么是HTTP请求方法(获取,发布,放置,删除等),何时应该使用? 什么是HTTP请求方法(获取,发布,放置,删除等),何时应该使用? Apr 09, 2025 am 12:09 AM

HTTP请求方法包括GET、POST、PUT和DELETE,分别用于获取、提交、更新和删除资源。1.GET方法用于获取资源,适用于读取操作。2.POST方法用于提交数据,常用于创建新资源。3.PUT方法用于更新资源,适用于完整更新。4.DELETE方法用于删除资源,适用于删除操作。

解释self ::,parent ::和static :: in php oop中的区别。 解释self ::,parent ::和static :: in php oop中的区别。 Apr 09, 2025 am 12:04 AM

在PHPOOP中,self::引用当前类,parent::引用父类,static::用于晚静态绑定。1.self::用于静态方法和常量调用,但不支持晚静态绑定。2.parent::用于子类调用父类方法,无法访问私有方法。3.static::支持晚静态绑定,适用于继承和多态,但可能影响代码可读性。

PHP如何安全地上载文件? PHP如何安全地上载文件? Apr 10, 2025 am 09:37 AM

PHP通过$\_FILES变量处理文件上传,确保安全性的方法包括:1.检查上传错误,2.验证文件类型和大小,3.防止文件覆盖,4.移动文件到永久存储位置。

See all articles