picture 0

因为业务需求,需要用到一个图床服务,大概搜索了一下,最终决定使用ClouFlare和Backblaze
原因嘛,当然是因为免费的10G空间啦
参考链接

  1. 把cloudflare变成你的专属免费图床
  2. Free Image Hosting With Cloudflare Transform Rules and Backblaze B2
    (人家官方都给文档介绍怎么弄了,不怪咱白嫖)

注册Backblaze

传送门->Backblaze
我们只需要用到B2 Cloud Storage
注册完成后,新建一个Bucket,任意命名
然后通过网页传一个文件,点击文件信息就能看到链接地址
访问打开,没得问题
这里我们需要记下Friendly URL

上传大量文件

我们有可能需要上传大量文件
用网页传明显不现实,正常都是使用ftp
但是,常用的ftp软件都不支持B2
这里我们使用Cyberduck
emmm,就是下面这只鸭子
图 3
安装完成后,点击新建链接
选择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 dynamicETag, 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的内容之类的
照着抄就行了
就这样吧