使用Clouflare和Backblaze搭建图床服务
因为业务需求,需要用到一个图床服务,大概搜索了一下,最终决定使用ClouFlare和Backblaze
原因嘛,当然是因为免费的10G空间啦
参考链接
- 把cloudflare变成你的专属免费图床
- Free Image Hosting With Cloudflare Transform Rules and Backblaze B2
(人家官方都给文档介绍怎么弄了,不怪咱白嫖)
注册Backblaze
传送门->Backblaze
我们只需要用到B2 Cloud Storage
注册完成后,新建一个Bucket,任意命名
然后通过网页传一个文件,点击文件信息就能看到链接地址
访问打开,没得问题
这里我们需要记下Friendly URL
上传大量文件
我们有可能需要上传大量文件
用网页传明显不现实,正常都是使用ftp
但是,常用的ftp软件都不支持B2
这里我们使用Cyberduck
emmm,就是下面这只鸭子
安装完成后,点击新建链接
选择Backblaze B2
需要Account ID or Key ID
我们回Backblaze网页
在左下角App Keys那里生成一套
填入连接,就能正常管理文件了
(当然,对于我来说,后续是需要通过api来完成这些操作的)
Cloudflare
注册一个账号,传送门
这里我们需要把域名的DNS改到Cloudflare
(当然也可以直接在Cloudflare注册一个)
刚好有个不用的域名,直接修改
首先在Cloudflare点击add a site
添加站点
输入域名,提示要修改dns
然后回到域名注册厂商,在管理后台修改dns服务器
这个需要一段时间生效,快的话10几分钟
完成以后就可以在Cloudflare修改解析记录了
添加CNAME解析
还记得我们之前记下的Friendly URL
么
我们添加一条cname,将其指导Friendly URL的域名上
只需要域名,前后都不需要
然后就是等待生效
完成后,替换域名,访问
例如https://{你解析的那一条}/file/{bucketname}/{filename}
正常情况,就应该可以访问了
。
。
。
。
嗯?正常情况?那我肯定不正常
没错,访问就是521
我找了半天没找到原因,最后看Backblaze博客
发现是没有开启SSL
好了,我们在Cloudflare左侧找到SSL/TLS
选择Full (strict)
应该就能访问了
缓存设置
在Cloudflare左侧找到Rules
选择Page Rules(页面规则)
免费的有3条规则,我们新建一条
url按提示填写,最后带上/*
然后添加设置Cache Level
:Cache Everything
缓存级别,缓存所有内容Edge Cache TTL
:7 days
边缘缓存,7天
总之按需调整
重写链接
默认的链接中都会有file/{bucket}
这一段,我们希望把他去掉
前面的博客中使用的works来实现
其实没必要,只需要链接重写就行了
在Cloudflare左侧找到Rules
选择Transform Rules
创建一个URL Rewrite
任意命名,比如Add file and bucket name
然后编辑规则
但是快捷选项中并没有我们需要的
我们点击Edit expression
编辑
输入not starts_with(http.request.uri.path, "/file/{这里写bucketname}")
然后then rewrite
选择Rewrite to
选择Dynamic
内容为concat("/file/{这里写bucketname}",http.request.uri.path)
然后部署规则,中间那一串就能省掉啦
去除头中的信息
创建一个Modify Response Header
任意命名,比如Remove Backbaze B2 Headers
选择all
然后在then里添加Set dynamic
,ETag
, concat(http.response.headers["x-bz-content-sha1"][0], http.response.headers["x-bz-info-src_last_modified_millis"][0], http.response.headers["x-bz-file-id"][0])
remove
, x-bz-content-sha1
remove
, x-bz-file-id
remove
, x-bz-file-name
remove
, x-bz-info-src_last_modified_millis
remove
, x-bz-upload-timestamp
其他配置
Backblaze 博客中还给出了其他一些设置
比如去除返回头中的bz的内容之类的
照着抄就行了
就这样吧