** 需求:上传到七牛云的图片,防止被盗链和被刷流量。
解决方法:在融合CDN里面,对域名进行防盗链配置。
举个常用的场景:现在有个关于分享的网页,url是:http://www.aaa.com/share?url=xxx.jpg,xxx.jpg是图片在七牛的外链。现在我不想别人在浏览器直接输入xxx.jpg 就能访问到图片,也不想别人狂刷xxx.jpg造成下载流量很大带来的经济损失。所以现在希望的效果是,在浏览器输入xxx.jpg访问不到图片,只有通过www.aaa.com域名或者其他允许的域名才能访问到图片。**
具体的设置如下:
1).首先需要一个已经备案好的域名,www.bbb.com
2).到七牛云首页的“加速CDN”里面,点击左边的”新建加速域名”
3).点击”新建加速域名”后,在右边部分根据实际要求填写,源站配置自己选择空间就好
<1>
<2>在页面的下部分高级配置里面配置防盗链,开启域名防盗链,在白名单里面允许访问的域名,但是”是否允许空 Referer“要选择否(是否能被浏览器直接访问)
<3>上面的步骤做好之后,记得在页面的最下方点击”创建“
4).创建好加速域名后在左边的”域名列表“选择刚刚创建的加速域名,在右边的”域名信息“拷贝CNAME的链接,然后到www.bbb.com域名的管理中心(比如阿里云的到阿里云域名管理中心)将www.bbb.com的CNAME解析到刚刚拷贝的链接,这里引用七牛云开发文档的说明图:
<1>
<2>
5).创建好之后来到存储空间,在”内容管理“里面将“外链默认域名”换成刚刚创建的加速域名,并点击”保存默认域名“,等待生效即可
6).如果全部生效后,复制的”内容管理“文件外链时就是:http://www.bbb.com/xxx.jpg,放到浏览器会显示403错误(浏览器不能访问目的达到了),而输入:http://www.aaa.com/share?url=http://www.bbb.com/xxx.jpg 可以访问(白名单有的域名都可以访问,http://www.ccc.com/share?url=http://www.bbb.com/xxx.jpg 是访问不到的,还是403,因为www.ccc.com没在白名单里面)。当加速域名配好后,图片的下载速度也会增加一些。
7).但是防止疯狂刷新要怎么解决?如果用http://www.aaa.com/share?url=http://www.bbb.com/xxx.jpg 还是可以访问到图片,还是可以刷新,关于这个问题的解决方法,我采取在代码中去解决:
1.给每张图片的观看次数做限制
2.给图片的url加密:http://www.aaa.com/share?url=时间戳+base64加密,避免在浏览器中看到图片名称
8).这里有一个七牛云官方给出的具体操作视频:http://notdelete.echohu.top/spjc/3.mp4
联系客服