使用CloudFlare加速和保护你的境外网站

博主的小站搭建在OpenShift Paas上,使用的免费账户,目前收费账户不面向大陆开放。免费看起很诱人,其实弊端也很多,首先你是小白鼠,软件更新都通过免费用户测试,然后再升级给收费用户,也就是说服务不稳定啊,宕机啊,是常有的事情;其次,只给免费用户提供了512M内存和1G存储空间,貌似还有流量和连接数的限制,但官方没有给出具体数值;然后如果你的网站经常遭受攻击,影响他们正常运营,他们有权停止你的服务。


如果以上你都能接受,又是搭建的比较小的网站,可以尝试下,否则还是使用国内收费服务吧,一些大牌厂商还是值得信赖的。


不过博主就这点出息,选择了国外的免费服务,首先美国是个比较注重人权的国家,就算是免费用户,不会说随随便便就把你干掉,比某些国内厂商靠谱多了,然后免去了备案的烦恼,对于向往自由的我,备案就像栓了个绳,非常不爽。


不管网站建在哪都会遭受到一些恶意攻击,对于建在国外网站,还要承受访问速度慢的苦恼,接下来,也是本文的重点,为大家介绍使用CloudFlare来加速和保护你的境外网站。大陆的站长就回避吧,使用它不但加速不了,还会拖累你的速度。考虑安全和速度,找个国内的CDN使用吧,比如360或者安全宝。



注册


网址:https://www.cloudflare.com/

不细说了,自己摸索下吧,看不懂的补补英语吧。如果打不开,尝试翻墙。网站被墙了没事,只要分配的CDN节点的IP没有被墙,就可以使用。



基础功能


如果使用CloudFlare的CDN,就必须使用他的DNS解析服务,所以要到你域名提供商那里修改NameServers,改成CloudFlare提供的记录。


注册之后,找Add site,将自己的域名输入,他会自动扫描你当前的DNS设置,或者你自己手动进行配置下。 非常简单,配置好DNS后,CloudFlare就开始加速你的网站了,并且自动提供了基础的防攻击功能。



status.png



注意看DNS记录的Status一栏,上面一个带颜色的图标指示该条记录在使用CDN功能,下面一个不带颜色的指示该条记录没有使用CDN功能。直接点击图标可以打开或者关闭,试一下吧。



防盗链功能


CloudFlare提供了图片防盗链功能,防止其他网站引用你的图片,保护你的流量不白白流失。


开启方法:

点击如下图标

scrapeshield.png



进入网页后,往下拉,找到下图中所示的项目,点击打开开关即可。

hotlink-protection.png


稍微高级点的CDN功能


CloudFlare默认按文件扩展名缓存文件,只有下图所示的扩展名的文件才会进行缓存,其他请求会交给原站进行响应。




extensions.png


我发现使用默认的缓存功能,效果不明显,缓存的请求和流量占总数的百分比很小,以下是CloudFlare的统计数据:


request.png


bandwidth.png


performance.png



怎么能改善下呢?CloudFlare有Page Rules这项功能,可以添加URL Pattern,匹配上的设置成Cache或者Bypass(不缓存)。


于是我为自己的小站添加了两条规则,一条规则是将uploads目录下静态文件全部缓存,这里的文件有pdf、zip等格式的文件,CloudFlare默认不缓存。



upload-rule.png


之前我给自己的网站开启了伪静态,第二条规则把伪静态的html页面也一起缓存了,因为博客文章改动不大,差不多相当于静态页面了。这条规则有啥影响还不得知,暂时没有遇到问题,可以想象到的一个影响是,更新了一个文章后,浏览器不能看到实时看到,但实际情况是可以更新,这块是挺智能的。



html-rule.png


这条规则注意设置项:
Custom caching :Cache Everything
Edge cache expire TTL : 4 hours
还有目前已知的可能会引起问题的设置,Rocket Loader 最好设置成no,否则他能识别出伪静态,不进行缓存。这里面很多设置项,感兴趣的可以研究下,英语不好,我就不细细研究每一项是什么意思了,目前的设置满足我的要求了,过几天看效果。




20150915 出问题了


直接缓存伪静态的博客页面,存在的问题:


1、管理员后台登陆后,查看博客,由于是缓存的静态页面,就失去了登陆信息。


2、读者评论后,返回的页面依然是缓存的静态页面,看不到自己实施的评论。


基于以上原因去掉了缓存伪静态html页面的功能,但如果你的小站流量压力比较大,权衡一下,可以继续开着该功能,上面上个缺点也不是不能接受。博主会继续研究,充分挖掘ClareFlare的功能,尽可能多的缓存页面。




怎么确定页面被缓存了


这里有个在线测试网站的工具:http://www.webpagetest.org

输入你要测试的网址,点击开始测试。找一个文章的地址,比如:http://blog.dreamshare.in/over ... .html,这样可以测试下伪静态的页面缓存没有。


测试完成点击Details查看详细测试结果,先不关心其他结果,翻到页面下方 Request Headers 点击Expand All 查看所有请求和响应。



Request 1: http://blog.dreamshare.in/over ... .html

Response Headers:
HTTP/1.1 200 OK
Date: Mon, 14 Sep 2015 16:16:54 GMT
Content-Type: text/html; charset=UTF-8
...
CF-Cache-Status: HIT
...
Server: cloudflare-nginx
CF-RAY: 225d662598281e71-SJC
Content-Encoding: gzip

Request 5: http://blog.dreamshare.in/wp-i ... 4.2.4

Response Headers:
HTTP/1.1 200 OK
Date: Mon, 14 Sep 2015 16:16:55 GMT
Content-Type: text/css
...
CF-Cache-Status: HIT
...
Accept-Ranges: bytes
Server: cloudflare-nginx
CF-RAY: 225d662908581e71-SJC


查看CF-Cache-Status,如果是HIT,说明该请求是被缓存的,直接由CDN响应的,HIT的越多,CDN作用越大,源站的压力就越小。仔细比对下你自己设置的规则有没有生效。


附CF-Cache-Status说明:

HIT: resource in cache, served from CDN cache.


MISS: resource not in cache, served from origin server.


EXPIRED: resource was in cache but has since expired, served from origin server.


STALE: resource is in cache but is expired, served from CDN cache because another visitor's request has caused the CDN to fetch the resource from the origin server. This is a very uncommon occurrence and will only impact visitors that want the page right when it expires.


IGNORED: resource is cacheable but not in cache because it hasn't met the threshold (number of requests, usually 3), served from origin server. Will become a HIT once it passes the threshold.


REVALIDATED: REVALIDATED means we had a stale representation of the object in our cache, but we revalidated it by checking using an If-Modified-Since header.


 




20160108 重新设置的CDN PageRule


启用了以下三条规则:

cdn-pagerule.png


1、缓存所有html结尾的url 也就是所有的伪静态页面都缓存了 之前使用了WP自带评论功能 缓存伪静态页面存在问题
现在使用了多说评论功能 评论不再有之前的问题了
2、dreamshare.in 301 重定向到 blog.dreamshare.in
3、缓存所有wp-content/uploads下的文件


0 个评论

要回复文章请先登录注册

www.000webhost.com