杂谈
最近gitee真的不让人省心,之前社区里有热心网友使用的gitee图床,结果在前几天突然gitee加了referrer验证,做了防盗链,然后带来了一波小范围影响
很多开源的项目挂的赞助商的图片全都变成了gitee的logo
![图片[1]-简单三步解决gitee图床问题-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220327002535698-1024x629.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
很多做个人博客的网站,图片也全都变成了这个样子
![图片[2]-简单三步解决gitee图床问题-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220327002816424.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
之前我们的热心网友也用了gitee图床,因此部分帖子也出现了这种情况,直接图裂了!
![图片[3]-简单三步解决gitee图床问题-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220326091926864.jpg?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
那么如何三步解决上面的这个问题呢?
图文教程
下载gitee打包文件
![图片[4]-简单三步解决gitee图床问题-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220327002847453-1024x674.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
下载完成后,我们解压看了一下,目录的格式是xiaonuo-master/xiaonuo-master
下有文件
![图片[5]-简单三步解决gitee图床问题-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220327002904976.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
上传至阿里云OSS
在阿里云OSS控制台中,你可以新建一个bucket,命名随意,譬如fancypig
![图片[6]-简单三步解决gitee图床问题-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220327003129154-1024x490.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
然后新建一个目录
![图片[7]-简单三步解决gitee图床问题-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220327003045550-1024x392.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
我们这里目录名称命名为xiaonuo088
(命名随意,按照自己个人习惯),点击上传文件
![图片[8]-简单三步解决gitee图床问题-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220327003242524-1024x458.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
选择扫描文件夹
![图片[9]-简单三步解决gitee图床问题-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220327003306244-1024x419.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
我们选择刚才的文件路径,点上传即可
![图片[10]-简单三步解决gitee图床问题-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220327003327521.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
上传完成后,你之前gitee的图床的内容就已经在OSS中了,我们现在要做的就是在网站上做一个替换。
使用sub_filter进行替换
我们使用最简单的方式,那就是nginx里的代理,我们将之前gitee里的路径gitee.com/xiaonuo088/xiaonuo/raw/master
替换为OSS的文件路径static.iculture.cc/xiaonuo088/xiaonuo-master
sub_filter gitee.com/xiaonuo088/xiaonuo/raw/master static.iculture.cc/xiaonuo088/xiaonuo-master;
![图片[11]-简单三步解决gitee图床问题-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220327004332216.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
这种方式相当于不需要覆盖数据库了,直接在web显示的时候就会进行替换,然后刷新页面,我们发现之前的图片都复活了,是不是还挺简单实用的
![图片[12]-简单三步解决gitee图床问题-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220327003538683.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
其他的解决方案
数据库批量替换
如果这里gitee
只是临时做了防盗链,未来还有去掉这个策略的可能的话,我们可以选择不替换数据库,但是你如果确定以后弃坑不再用gitee
图床了,那好,我们就直接替换数据库中的链接吧!
你可以先搜一下我们的链接出现在哪些表格里
![图片[13]-简单三步解决gitee图床问题-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220327005959235-1024x408.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
我们发现主要存在于这两张表里fancypig_comments
(评论内容)、fancypig_posts
(推文内容)
![图片[14]-简单三步解决gitee图床问题-FancyPig's blog](https://static.iculture.cc/wp-content/uploads/2022/03/20220327005507962.png?x-oss-process=image/auto-orient,1/format,webp/watermark,image_cHVibGljL2xvZ28ucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMTA,x_10,y_10)
替换模板
UPDATE 表名 SET 字段 = REPLACE(字段,'待替换内容','替换值');
我们这里可以使用的替换语句
UPDATE fancypig_comments SET comment_content= REPLACE(comment_content,'gitee.com/xiaonuo088/xiaonuo/raw/master','static.iculture.cc/xiaonuo088/xiaonuo-master');
UPDATE fancypig_posts SET post_content= REPLACE(post_content,'gitee.com/xiaonuo088/xiaonuo/raw/master','static.iculture.cc/xiaonuo088/xiaonuo-master');
设置referrer为空
当然,如果你只是个人博客,不需要考虑很多安全因素和交互相关的问题,我们可以采用下面的方式,譬如直接在服务端设置referrer
为空
你可以在meta标签里增加
<meta name="referrer" content="no-referrer" />
也可以在img src标签里增加
<img referrer="no-referrer|origin|unsafe-url" src="{item.src}"/>
这样在请求gitee图片时,referrer就为空了,gitee默认允许为空或者带有gitee.com
的链接访问他们的资源,这样相当于又钻了空子。
不过设置referrer
为空的话,也有弊端,那就是如果你自己的网站有自己的图片远程附件存储,做了referrer验证防止别人盗链这里就会失效,因为你把referrer
已经设置为空了(一般我们的策略都不允许referrer
为空请求图片附件资源,但是gitee
不会,因为如果它设置referrer
为空不能请求的话,那我们在浏览器里直接打开gitee
的图片就看不了了,这不符合正常人的操作习惯)
- 最新
- 最热
只看作者