如何通过Backblaze云存储+Cloudflare来搭建高速安全的免费图床或外链

独白

正常搭建一个网站或者任何东西,都需要用到存储,他可能是一张图片,也有可能是一个下载包,或安装包,如果我们把他上传到一些免费的图片或者网盘上面,又担心跑路,如果我们把他上传到一些大厂上面,又需要一笔不小的费用,又或者是有某些限制,用起来极其的不方便。

其实最稳妥的办法依旧是使用大厂的存储,来存储一些非常重要的资料,但如果是个人想玩玩,又不想一下子投入太多的金钱,我们就可以找到平替的方法,

所以,我使用了Backblaze来作为存储桶,没有其他的原因,主要是因为他本身够便宜

他的存储费用是0.005美元/G/月,

最关键的是Cloudflare和Backblaze都是Bandwidth Alliance(带宽联盟)的成员,它们之间的数据传输(带宽)是免费的,而Cloudflare的CDN服务也不收费,那么这样一来就不用担心流量费用的问题!而且Backblaze前10G是免费的,所以理论上来说,小站长存储的文件在10G以内,就等于是免费使用,

Backblaze账号注册

打开官网链接进行注册:https://www.backblaze.com/

这步就略过了,翻译一下页面,很容易就可以注册了,

存储桶创建与上传文件

1:我们进入后台后找到B2 Cloud Storage - Buckets

2:点击创作一个桶

桶独特名字:自定义,其他的配置可以如下图,也可以按自己的需求配置。

然后点击进入生命周期设置

把他设置成只保留最后一个文件 ,防止重复,当然啦,如果相同路劲相同文件名和格式的情况下就会覆盖啦,所以这里大家要注意一下,上传文件的格式名称,应当使用变量

这个时候就可以点击上传一个文件,随便上传一个文件即可就可以得到相关的接口地址

 

但是这个时候还要注意,如果直接把这种链接分享出去,不仅会暴露自己的桶信息,还有被刷流量的风险,导致免费的流量被用完

所以,我们需要设置Cloudfare,用Cloudfare来充当流量,把所有的文件都缓存在Cloudfare上面

Cloudfare的配置

将你的域名托管到Cloudfare后,打开DNS>Records,点击Add record添加记录

在Cloudfare中添加一条CNAME记录,做好以下设置后点Save保存:

二级域名自定义,这里我设置成img
Target设置为你的Friendly URL的域名
将Proxy status设置为开启,这样就会同时启用Cloudfare代理以及CDN服务
TTL默认Auto

这里添加的解析域名:f005.backblazeb2.com,是来自刚才的友好url中的地址

然后打开SL/TLS>Overview,将SSL/TLS的加密模式设置为完全(严格)

 点击配置

等待生效后这个时候就可以访问刚才上传的图片了

// 原先的:
https://f005.backblazeb2.com/file/桶名称/文件名.jpg
// 现在的:
https://你的域名/file/桶名称/文件名.jpg

优化链接

但是使用中发现,链接中还是包含了桶名称的路劲

所以需要用到规则中的转换规则

我们创建一个重写URL的规则

写好名称并选择自定义筛选表达方式

写好请求匹配规则

not starts_with(http.request.uri.path,"/file/这里写桶名称")

我们在选择Dynamic

 

concat("/file/这里写桶名称",http.request.uri.path)

然后保存就成功了,

这时候我们可以在看看我们的链接

// 原先的:
https://你的域名/file/桶名称/文件名.jpg
// 优化的:
https://你的域名/文件名.jpg

我们的路劲已经可以以根目录的形式访问到文件了

优化响应头

还可以把一些与b2存储桶相关的响应头给隐藏起来

操作方式直接上图

X-Bz-Content-Sha1
X-Bz-File-Id
X-Bz-File-Name
X-Bz-Info-Src_last_modified_millis
X-Bz-Upload-Timestamp

这里可以自己访问刚才上传的图片F12看一下响应头,然后把相关的不想展示出来的隐藏掉,

我已经隐藏了,我们在来看一下有没有生效

通过F12可以看到,响应头已经被隐藏起来了,

缓存设置

我们需要设置缓存,让Cloudflare能够更好的命中缓存

点开桶设定,

并把:{"cache-control":"max-age=5184000"} 写入桶信息中,其中5184000是秒的意思,换算成天也就是60天

然后我们就可以看到已经缓存成功了。

申请Application Key

在Backblaze云存储中打开Application Keys,点击Add a New Application Key

第一行,输入名称,

第二行,选择你的桶,其他按图所示

点击创建后,会显示出来桶的信息

复制keyID和applicationKey,特别是applicationKey,只会显示一次,忘记的话重新创建一个新的Application Key即可

到了,这里我们已经把所有的工作都做完了,

可以用这个生成的ID和KEY去对接任何支持b2或者s3的接口

比如ShareX这个软件,他就可以轻松的在windows环境中使用,把图片或者任意文件上传到我们的桶中

ShareX上传文件

ShareX下载

设置上传目标

然后我们把刚才创建的keyID和applicationKey填写进去,KEY就是密钥

然后就是桶名称,上传路劲可以选择一个大类,针对多项目的需求来创建,然后可以选择软件功能,支持变量日期等,我选择的是panxp/月

也就是我上传的所有文件都会在panxp这个文件夹中,然后在以月去区分文件夹

使用自定义url就是你用来提供给外部访问的URL,这个URL可以用另外一个域名去套一些CDN用来加速访问,也可以直接用刚才解析到CF上的域名,但是CF的域名他针对国内速度会慢一些,所以可以用一些国内的CDN,来加速一下,

还需要注意的是 需要把上传目标都设置为我们刚才配置好的b2 上面去

CDN配置

如果我们需要配置国内的CDN,这里我以:su.19nav.com

这个CDN商家可以加把每个G的价格给到5分钱,相对来说还是比较便宜的,注册后联系客服QQ:423889236 要求调价格即可

我们添加一个域名,选择静态加速

加速的域名写你需要对外展示的域名,源站类型选择域名,添加刚才CF上添加的域名

需要配置SSL,这是硬性要求因为需要用HTTPS的方式来回源

我们在回源配置中把 域名级回源HOST改为自定义域名,填写你刚才在CF上添加的域名,设置回源协议为https

因为如果不设置https回源的话,你访问这个CDN域名 ,他会直接301跳转到cf的域名上面,

到此结束。

THE END