又拍云CDN使用


为什么要使用CDN?

       网络已经成为生活中必不可少的一部分,无论是清早手机翻看的新闻八卦,还是公交地铁里刷的停不下来的短视频,又或是你闲逛的购物网站,热追的电视剧,都与 CDN 有着密不可分的联系。无论你在互联网上做什么,或者消费什么类型的内容,其实每个文本字符、每一帧图像背后都会有 CDN 的助力。

       CDN(Content Delivery Network,即内容分发网络)主要通过将访问内容缓存在边缘节点,缩短用户与网站的距离,来提高站点渲染速度和性能。很显然,CDN 发挥的作用主要由边缘节点来呈现,边缘节点作为用户与源站的桥梁,其实不仅仅只起到加速的作用,同时还可以作为恶意访问的“屏障”。

一、CDN访问控制

IP黑白名单

由于某些行业竞争激烈,因此常常会遇到一些竞争对手利用恶意 IP 占用网站资源,影响网站访问。为了能够保护站点数据和流量负载,需要网站运营者对这些恶意 IP 进行屏蔽。

若需要禁止某些 IP 或只允许某些 IP 访问,可以使用 IP 黑白名单功能。并且在同一时间内,又拍云只支持生效一种规则,比如:要么禁止某些 IP 访问,要么允许某些 IP 访问。支持 * 通配符,如 10.11.12.*,将禁止或只允许10.11.12.0 ~ 10.11.12.255范围的 IP 访问。

地区访问限制

地区访问限制是指根据加速网站的需求,允许或禁止特定区域的终端用户对网站资源的访问。即网站指定地区,允许该地区终端用户访问,而限制其他地区用户访问,或者相反。

防盗链

在讲防盗链之前,先来了解一下什么是盗链。

盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向终端用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。

简单来说,就是其他网站上“盗”用了你网站的资源,去增加他的网站点击率,但最后流量却算在你身上,让你花“冤枉钱”。这个当然不能忍!怎么办?由于各网站性质不同(游戏/新闻等),需求也是不尽相同的。所以又拍云提供多种防盗链功能,满足用户的需要。

Referer防盗链

最常用的防盗链手段,就是通过对 HTTP 请求中的Referer Header进行判断,来决定用户是否可以访问该资源。

白名单:仅允许名单中的域名网站访问文件,其他域名网站都不允许访问。

黑名单:仅禁止名单中的域名网站访问文件,其他域名网站都允许访问。

Referer 为空:若禁止即不允许用户直接访问该资源,因为直接在浏览器的地址栏中输入一个资源的 URL 地址,请求是不会包含 Referer 字段的。

User-Agent防盗链

HTTP 请求 Header 中的User-Agent字段,是一段浏览器或者设备标识的字符串。对于网站本身来说,有时需要让一些资源只能在某些浏览器或者设备上才能访问。

又拍云 CDN 支持针对 HTTP 请求头中的User-Agent信息,禁止或者允许符合特定User-Agent规则的请求。具体的使用场景例如:某客户端拥有自己专属的客户端对资源进行下载,该下载工具在请求时,使用了定制的User-Agent名称,或只允许此类User-Agent请求资源,此时可以配置User-Agent白名单就可以实现。

Token防盗链

Token 防盗链是提供时效性访问的。通过设置访问密钥和过期时间来达到加密文件的目的。只有按照算法成功计算出 Token 才能进行访问。比如网站有些内容,希望付费才能访问,且规定访问有有效期,就可以通过 Token 防盗链来实现。

回源鉴权

IP访问限制

可以针对单个 IP 在单位周期时间内的访问频率设置一定的阈值,将超过该阈值的 IP 的访问进行直接拦截,从而达到访问限制的目的。

当前的单 IP 访问频率只支持针对 CDN 单个边缘节点生效,当达到设定的阈值时,异常访问的客户端 IP 将加入黑名单中,并可以设定生效时间,在该时间周期内,所有该 IP 的访问都会被拦截。

CC防护

攻击一直都是让网站管理者头疼的问题,特别面对恶意的 DDoS 攻击时。CC 攻击(Challenge Collapsar)是 DDoS的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向受害网站不停地发大量数据包,造成对方服务器资源耗尽,一直到宕机崩溃。

CC 防护主要是针对 CC 攻击的一种应用层攻击防护,该功能通过自定义匹配规则对目标资源进行监控,当请求频率达到触发频率时,对疑似攻击请求进行校验,校验通过则允许访问;校验不通过,则直接禁止访问。

CORS跨域共享

刷新预热

反向代理中的IP传递

["HTTP_X_REAL_IP"] => string(31) "2409:896a:31:bc6a:2:1:7447:a924"
["HTTP_X_EDGE_RETRY_TIMES"] => string(1) "-"
["HTTP_X_FORWARDED_FOR"] => string(31) "2409:896a:31:bc6a:2:1:7447:a924"
["HTTP_X_REQUEST_ID"] => string(32) "5b16d20b4133036df1a1e272c116caf8"
["HTTP_CLIENT_IP"] => string(31) "2409:896a:31:bc6a:2:1:7447:a924"
["x-real-ip"] => string(31) "2409:896a:31:bc6a:2:1:7447:a924"
["x-forwarded-for"] => string(31) "2409:896a:31:bc6a:2:1:7447:a924"
["x-request-id"] => string(32) "5b16d20b4133036df1a1e272c116caf8"
["client-ip"] => string(31) "2409:896a:31:bc6a:2:1:7447:a924"

参考文献

https://www.upyun.com/tech/article/410/CDN%20访问控制的那些事.html