Cloudflare 全站缓存【教程】+iON 开 Pro【教程】 +访客源IP

admin 2021-1-15 1143


一、 Cloudflare 页面缓存(Page Rules)优化WordPress全站缓存配置规则
https://www.izcv.com/2669.html


二、网站使用Cloudflare的CDN后,获取访客的真实IP地址
https://www.izcv.com/2661.html


三、iON主机Plesk免费开通Cloudflare Pro订阅教程-含解析设置
https://www.izcv.com/2632.html

为什么要设置Cloudflare的页面规则 (Page Rules)进行全站缓存?

当你接入Cloudflare的CDN,并点亮小云朵之后。你的网站就已经通过Cloudflare的CDN节点进行中转了。默认情况下,Cloudflare 会对你网站中的图片、JS、CSS文件等静态文件进行缓存

当访客访问你网站页面的时候,所有的静态文件都是由Cloudflare的节点直接给到访客的,但是HTML文件是默认不缓存的。也就意味着访客访问你的某一页面的时候。仍然会回源你的服务器

所以,本篇文章就是教你如何使用Cloudflare的页面规则(Page Rules)把整个HTML页面给缓存。
使访客访问被缓存的页面的时候,直接交由Cloudflare进行服务,甚至你的源服务器不会收到任何GET请求。

这样做的好处是,可以大大减少源服务器的负载开支,使得你的站点能够承载更多的访客及流量。

下面两张演示图片就是使用了Cloudflare页面规则之后,节省的源站服务器的请求及流量。

如何通过浏览器判断某个页面是否被Cloudflare的CDN进行缓存?

在学会如何判断之前,我们要先熟悉一个CDN中常见的术语:“HIT”,中文叫做“命中”。我们先看下面这样演示的图片:

可见,图中对过往24小时之内的所有请求有一个统计,统计分为:命中未命中动态绕过……等等状态。

  • 【命中】状态就表示已经整网页完全被Cloudflare的CDN提供了服务;
  • 【绕过】状态则表示直接绕过Cloudflare的CDN由源站进行服务;
  • 【动态】状态则表示部分资源被Cloudflare的CDN缓存并服务,但混合了一些源站的请求;
  • 【未命中】因为命中与否是一个概率问题。Cloudflare 也并不能保证在缓存规则中的所有资源都完整的命中。

注:如果你开启了小云朵,但并未配置页面规则。那么你的绝大多数状态都是动态,因为访客访问页面中的静态资源交由Cloudflare进行提供,还是有一些请求是通过源站来服务的。

接下来,我们以Chrome为示范。教大家判断一个网页在开启Cloudflare CDN之后的缓存状态到底是【命中】亦或是【动态】

打开接入Cloudflare的网站页面,这里以热闹网首页示范。
“F12” 进入“开发者工具”,点击“Network”选项卡。
“Control + F5” 刷新该页面(苹果系统请使用 Command + R),并在“Name”栏中选择“网址”。

从上图中可以看到 cf-cache-status 的值为 “HIT”,则说明该页面已经完全缓存。

其他状态解释如下:

cf-cache-status:DYNAMIC (动态)
如果是“DYNAMIC”则说明,该站可能只开启了小云朵,并没有配置整站完全缓存。
cf-cache-status:BYPASS (绕过)
如果是“BYPASS”则说明,该站针对这个页面设置了绕过,不允许缓存。

Cloudflare的缓存机制

假设你的站点有 www.renao.org/1.html 和 www.renao.org/2.html 两个页面。

当访客A 访问1.html这个页面的时候,首先会经由Cloudflare,这个时候你的页面规则就起作用了。
Cloudflare会发现,吼吼,这个站有个1.html 我给它缓存下来,并且转发给A。

当访客B 在Edge Cache过期时间之前,重复访问1.html的时候。
Cloudflare会思考一下。哈哈哈,这个1.html我有。不用麻烦源站了。我直接给到B就可以了。

这就是所谓的命中率,如果这个页面被完全命中,那么B访问1.html虽然得到了网页,但是是由Cloudflare直接提供的。你的源站甚至连客户的IP都统计不到。

但是,2.html 这个页面在你的规则建立开始时从未有任何访客访问过。那么Cloudflare也不知道这个页面的存在,也不会缓存。除非等到真的有人访问过,Cloudflare才会发现,并对其进行缓存。

好了,冗长的理论知识讲完了,我们来进行实战。
这里以Wordpress源站举例,来详细讲解如何设置页面规则才能够进行全站缓存。

一、Cloudflare 页面规则 免费版3条规则配置

由于Cloudflare免费版只提供了三条免费的规则,所以我们的想法有很多,但是真正实现起来肯定要有所取舍。下面提供了三种热闹网测试过的方法。根据你网站的具体情况选择即可。

在所有的规则配置中,“*”代表通配符,另外,规则注意上下排序。默认从第一条规则顺延到第二条规则,然后才是第三条规则。具体请参照以下【三种方法】的详细配置说明。

方法一、常规无人值守方法(网上流传配置方法)

  • *.renao.org/wp-login*
  • *.renao.org/wp-admin*
  • *.renao.org/*

第一条和第二条:
研究Wordpress后台目录,我们发现:wp-login 和 wp-admin 两个页面或目录分别是Wordpress后台的登陆页面和后台管理目录。为了让Cloudflare不缓存这些内容。我们在第一条和第二条中。建立的规则是Bypass,也就是绕过。

第三条:
此条规则很简单,也很容易理解。就是告诉Cloudflare 进行全局缓存。无论是图片、html、js、css、等等统统给我缓存。当然,按照上面提到的排序规则。Cloudflare会过滤掉以上我们不想要缓存的第一条、第二条。

方法二、常规无人值守方法

  • *.renao.org/*preview=true*
  • *.renao.org/*.php*
  • *.renao.org/*

第一条:
由于Wordpress 提供了预览页面,我们研究Wordpress 的预览页面URL可以发现一个特征,预览页面的URL都含有“preview=ture”这个字段,所以通过第一条规则,可以限制Cloudflare 缓存我们的预览页面。如果没有此条规则,Cloudflare会缓存我们预览的页面。但实际缓存了预览页面对网站本身的影响并不大。

第二条:
这条规则可以说是十分重要了。如果不设置此条规则,那么我们的后台页面、甚至包括登陆页面也都会被Cloudflare给缓存进去。曾经有小伙伴的wp-login页面(Wordpress默认登陆页面)连带着登陆账号密码统统被缓存了。访客直接可以通过缓存的账号密码进入Wordpress的后台,你说恐怖不恐怖?
此条规则是我们为了防止Cloudflare缓存我们的动态页面(登陆页、后台页)。这条简单粗暴的直接将所有带有“.php”的页面请求全部Bypass 也就是不缓存。

第三条:
同【方法一】的第三条

方法三、常规无人值守(并为针对“搜索功能的CC攻击”单独开启5秒盾)

  • *.renao.org/?s=*
  • *.renao.org/*.php*
  • *.renao.org/*

第一条:
将所有在Wordpress站内搜索的用户开启5秒盾。一般针对Wordpress的CC攻击都是通过随机UA、随机搜索内容来创建数千、数万的URL。并通过大量的代理IP来模拟真实用户访问。毕竟搜索在Wordpress这个系统中是需要调用数据库,很消耗服务器资源的
如果攻击者不清楚你的Page Rules 的配置规则,通过站内搜索对你的站点进行CC攻击的时候,此规则就能够很好的帮助你缓解攻击。除非他技术高超可以穿5秒盾

第二条:
同【方法二】的第二条

第三条:
同【方法二】的第三条

使用此种方法,将会舍弃上面方法二提到的【文章预览】功能不缓存,影响并不大。

特别注意⚠️

如果你留意到了上面提到的缓存机制的时候,一定要注意一件事情。就是若作为管理着的你登陆在Cloudflare的后台。有些主题在登陆状态下浏览文章是有“登陆条”的。所以尴尬的事情会发生。就是Cloudflare会无差别的把你的登陆条给缓存上去。真正的访客登陆到页面的时候,能看到你的用户名、留言数、等等关键信息。
所以,你需要在Wordpress的设置中关掉显示登陆条的功能

二、Cloudflare Pro 页面规则 20或30条规则配置

呼~如果你有Cloudflare Pro的付费版本,那么恭喜你可以配置20条页面规则。
呼~如果你参照了热闹网的另一片教程《iON主机Plesk免费开通Cloudflare Pro订阅教程-含解析设置》,那么恭喜你可以配置30条页面规则。

如果你认真的把本文上面的内容全部仔细研究了一下。那么就可以任由你发挥、随意搭配咯。这里贴出一个配置的示范。

这里的第6条,设置之后,所有的动态页面(php)的请求全部301重定向到了热闹网的首页。也就意味着我自己也不能登陆后台进行编辑了。当我需要写文章的时候,将此条规则临时关闭,并清楚本地浏览器缓存就可以了。

三、其他Cloudflare 常见功能

清除缓存:当我们的页面已经被完全缓存之后,更新页面需要单独删除此链接的缓存,以便Cloudflare重新从源站抓取。


I’m In Attack:开启5秒盾模式


调试模式:开启之后默认绕过所有缓存,以便我们进行调试。


最新回复 (2)
  • admin 2021-1-15
    2


    首先说明一下,本教程并不是教授你《如何寻找别人的站在Cloudflare防护下的真实源站IP》而是,当你的网站套上Cloudflare 的CDN,并打开Cloudflare的小云朵。教你源服务器显示访客的真实IP地址的方法。

    Cloudflare 作为可靠性及高,又成本最低的CDN和防护方案,深受各大中小站长的喜爱。包括著名的域名注册商 Namesilo 在内的很多网站,都选择了Cloudflare 作为CDN。

    相信当你看到本文的时候,也已经使用上Cloudflare 的服务。因为Cloudflare 提供了免费的订阅,足够个人小站使用了。

    一、Cloudflare 的CDN 常规使用

    当你的网站接入Cloudflare 的CDN,并在Cloudflare的后台点开小云朵(代理状态 改为 已代理)生效之后。

    这个时候你会发现,通过站长工具 Ping 你的网址。响应的IP地址为Cloudflare的IP地址。

    也就是说访客通过浏览器访问您的网址,会首先到达Cloudflare的CDN服务器,再经过 Cloudflare 的中转抵达你的源站。如下图所示:

    在没有进行额外设置的情况下,访客的IP地址是不会正确的体现在你的真实源服务器上的。
    尝试用你自己的浏览器访问你自己的网址,然后查看宝塔面板的 【站点设置】【响应日志】

    可以通过【响应日志】看到,你源服务器得到的访客IP并不是你真实的IP,通过查询此IP可以得知。这个IP地址是Cloudflare的CDN服务器IP地址。

    简单总结一下就是,当你启用了Cloudflare的CDN之后。你源站收到的请求全部都是Cloudflare的CDN地址。

    虽然,这并不会影响客户的正常访问。但在以下这种情况下是会出现问题的。

    例:源服务器开启了防CC或者WAF策略

    也不知道为什么,互联网上总有隐藏在背后。不断对你站点进行攻击的人。尽管小站流量不大,也没有影响任何人的利益。却总是有人没日没夜的对你的网址、服务器进行扫描、嗅探、攻击。

    在你开启Cloudflare 的CDN之后,如果设置得当。针对服务器的DDos攻击可能会因为隐藏掉原始IP使得攻击者无法下手。但攻击者的手段多到你无法想象。比方说攻击者使用 CC 的手段对你的网站地址进行攻击的时候。往往会采用大量的代理IP,模拟正常访问。让你的源服务器超过其负载能力导致宕机。比方说大量的请求导致CPU、内存超载。或者源服务器宽带超载。

    往往网站运营者,会采用在源站配置防CC策略。来屏蔽攻击者的IP。


    但如果你已经开启了Cloudflare的CDN,那么你的源服务器屏蔽的并不是真实的访客IP。反而屏蔽的是Cloudflare的CDN服务器节点IP,那么这个时候就会导致大量的Cloudflare服务器无法正常访问到你的源服务器。即使针对Cloudflare CC攻击的量并没有超过服务器的负载。那么正常的访客也会无法访问你的网站。

    所以如何让源服务器获取到访客真实的访问IP就显得尤为重要了。

    二、设置源服务器的Nginx使源服务器获取访客真实IP

    这里示例中,我们采用宝塔面板,Web服务采用Nginx。

    点击宝塔面板中的:【软件商店】 -> 【运行环境】 -> 并在Nginx 后面点击【设置】

    接下来点击【配置修改】,并在下图位置插入如下两段代码。并点击保存。

        set_real_ip_from 0.0.0.0/0;
        real_ip_header X-Forwarded-For;

    经过以上修改,我们宝塔源服务器就可以获取到访客的真实IP了。


  • admin 2021-1-15
    3


    利用ION提供的免费空间。来为我们的域名开通 Cloudflare Pro订阅的功能。

    iON免费空间是Krypt旗下的云服务器品牌,作为一家老牌IDC,iON为我们提供了一款 型号为Start Up的免费WordPress 空间套餐,尽管仅有1G的储存空间、25G的月流量。但由于 iON 的这款虚拟主机是采用Plesk面板管理的,而Plesk面板有提供插件ServerShield by Cloudflare。可以帮我们免费享受到 Cloudflare Pro 订阅的部分权益和功能。

    这里需要注意的是iON免费空间不定时的限量发放,如果你手头没有的话,短时间可能抢不到了。虽然官网依然挂着抢购的链接,但实测是没法正常购买和使用的。但如果你刚好手头有的话,可以参照本教程把Cloudflare Pro的功能利用起来了。毕竟单独订阅 Cloudflare Pro 版也是一笔不小的开支。

    前提条件:

    1. 准备需要开通Cloudflare Pro的主域名
    2. ION的免费空间
    3. Cloudflare账号
    4. 一个靠谱的Cloudflare Partner 提供者

    一、域名的准备

    演示用的域名为 renao.org


    此域名注册商为 【腾讯云】,正在使用的NS服务商为DnsPod。
    域名的A记录正常指向源服务器的IP。网站可正常访问。
    接下来的步骤将会通过此教程,为这个域名开通免费的Cloudflare Pro 的功能。

    二、将域名绑定在iON提供的免费空间上

    通过iON的管理地址,登陆iON免费空间 https://ion.krypt.com/login

    并点击 【iON云服务】【登陆Plesk控制面板】 进入Plesk管理界面。

    点击面板中 【主机设置】 按钮

    在“域名” 中,填写您的主域名。填写完成后,点击【应用】,并点击【确定】

    三、将域名开通Cloudflare Pro 功能,并推送至你的Cloudflare账号

    通过点击 【ServerShield by Cloudflare】按钮访问Plesk 的插件
    在下图红色框中,输入你的Cloudflare用户名及密码,并点击【提交】按钮。

    Plesk 的 ServerShield by Cloudflare 插件成功绑定你的Cloudflare账号之后,再次进入此插件,就可以看到你绑定在Plesk 的主域名已经显示在此页面中。状态为灰色的off状态。

    此时,你只需要点击该滑块,将状态改为绿色的on,即可将您的域名推送至你的Cloudflare账号,并开通Cloudflare Pro功能。

    四、确认域名已经成功开通 Cloudflare Pro 功能

    通过Cloudflare官网,访问你的Cloudflare账号。
    并查看该账号下的域名订阅,确认是否已经成功开通。

    上图中,我们查看域名已经成功的被推送至你的Cloudflare账号中,并且DNS的设置按钮中的页面已经提示:

    合作伙伴托管区域
    您的DNS区域文件由Cloudflare的合作伙伴 VPLS 托管。管理网站中的DNS记录。

    同时,我们也可以看到,此域名在Cloudflare中的“页面规则”功能,已经显示剩下30条(免费版订阅仅3条)
    此域名的“Web应用程序防火墙”功能也已经变成可用状态。Spectrum功能的按钮也已经显示出来。


    (Cloudflare Pro订阅相对于免费订阅的功能,这里不再额外讲解。后续会有详细的文章对其说明)

    五、通过 Cloudflare Partner 进行域名解析设置

    通过以上前四个步骤,你的域名已经成功的拥有了Cloudflare Pro的订阅功能。
    但由于你的域名的NS记录仍然是DnsPod,所以截止到目前,虽然订阅有了,但你的域名和Cloudflare并没有半点关系。也不会影响你之前的所有解析记录。那么如何对我们的域名开始解析,并真正的利用Cloudflare Pro的订阅呢?这里需要你找到并使用 Cloudflare Partner 的提供商,具体请参照以下教程:

    注意:Cloudflare Partner 不同于 Cloudflare Pro ,尽管两者经常被缩写成同样的“CFP”

    • Cloudflare Pro 是订阅的类型,Pro的订阅比免费订阅多了一些功能;
    • Cloudflare Partner 是 合作伙伴,利用Cloudflare Partner 可以使用NS、Cname、自选IP等方式接入CF

    访问 https://cloudov.com
    (Cloudflare Partner 的提供商)

    通过你的Cloudflare 账号密码登陆到 CloudOV 这个Partner的面板中。
    登陆成功后,可以看到你的域名已经在域名列表中,如下图点击【Manage DNS】

    进入到Manage DNS 界面中,如下图可以看到中间的两个模块:

    • DNS Management
    • CNAME SETUP

    在 “DNS Management” 模块中,删除默认的所有记录。并
    设置您原来DnsPod中的A记录解析。
    也就是 “@的A记录” 和 “www的A记录” ,解析到你真实的源站IP,并开启小云朵。

    “DNS Management”的记录设置成功之后,在 “CNAME SETUP” 模块中就自动生成了对应的【cname记录】

    六、域名CNAME接入 Cloudflare

    登陆你域名的真实NS服务商的管理界面,本示例中使用的是DnsPod
    如下图,删除原有@和www 的A记录,并添加@和www的cname记录为第五步中Cloudflare Partner生成的接入记录即可。

    至此,您的域名已经通过iON提供的免费虚拟主机使用了Cloudflare Pro的订阅。

    福利:重复上述步骤中的二、三步骤,在不撤销原有域名推送订阅的情况下,添加新的域名并做推送,理论可以无限添加 Cloudflare Pro订阅哟!


返回