Backblaze云存储+Cloudflare搭建高速安全的免费图床

主机推荐网 540 0

0.前言

搭建个人博客、网站最头疼的莫过于图片存储的问题了吧,上传到免费图床站点就怕它哪天跑路,利用Github当图床访问速度又慢。

最稳妥的方案还是使用大厂的云存储服务,比如我之前用过的腾讯云COS,只不过也并没有想象中那么美好。。。

它的后台界面极其复杂、难用就不说了。我们使用对象存储首先要考虑的就是防坏蛋盗刷流量,否则,很可能一觉醒来一套房就没了。 (夸张了点)
而腾讯云COS服务没有提供相关防护功能,需要接入腾讯云CDN服务(这是另外收费的),接入腾讯云CDN后,才有抵御攻击以及流量封顶相关配置。再一个就是,接入腾讯云CDN还需要一个国内已备案的域名。总之,对于个人博客、网站来说过于麻烦,也不划算。

1.零成本个人图床方案

后来无意中发现了Cloudflare+Backblaze这套组合搭建图床的方案,完美地符合了我的需求!

Cloudflare免费提供CDN全球加速、以及不计量的DDoS攻击防护,Backblaze云存储前10GB空间免费(用来当个人图床完全够用),需要更大容量的话,它也有着秒杀大厂的实惠价格:

Backblaze云存储+Cloudflare搭建高速安全的免费图床

最关键的是Cloudflare和Backblaze都是Bandwidth Alliance(带宽联盟)的成员,它们之间的数据传输(带宽)是免费的,而Cloudflare的CDN服务也不收费,那么这样一来就不用担心流量费用的问题!

没有对比就没有伤害,相比于某些知名大厂,Cloudflare和Backblaze不仅对于平民用户非常友好,最令我感到舒服的更是它们两的后台界面逻辑,非常简洁、直观,一看就懂!

说了这么多,无非就是想表达我对这套方案十分满意,好的产品、服务就应该让更多的人知道!相信你也心动了,接下来搭建教程献上~

2.Backblaze账号注册

打开链接:The Best Unlimited Online Backup and Cloud Storage Services (backblaze.com),进入Backblaze官网

点击B2 Cloud Storage注册账号

Backblaze云存储+Cloudflare搭建高速安全的免费图床

进入账号后台页面

Backblaze云存储+Cloudflare搭建高速安全的免费图床

3.存储桶创建与上传文件

点击Create a Bucket创建存储桶

Backblaze云存储+Cloudflare搭建高速安全的免费图床

设置桶名(建议复杂一点,更安全),选择Public公开,其它选项保持默认

Backblaze云存储+Cloudflare搭建高速安全的免费图床

点击Lifecycle Settings

Backblaze云存储+Cloudflare搭建高速安全的免费图床

选择只保留最新版本文件—Keep only the last version of the file

Backblaze云存储+Cloudflare搭建高速安全的免费图床

点击Upload/Download随便上传一张图片

Backblaze云存储+Cloudflare搭建高速安全的免费图床

上传完成后,打开图像查看详细信息

Backblaze云存储+Cloudflare搭建高速安全的免费图床

4.Friendly URL

在文件详细信息中,有一个Friendly URL,它就是Backblaze云存储提供的日常引用、访问文件的原始链接,但我们肯定不能使用这个原始链接

Backblaze云存储+Cloudflare搭建高速安全的免费图床

由于Backblaze云存储是有每日限额的,如果我们使用原始链接请求,那么是直接从Backblaze请求数据,是会消耗免费额度的:

Daily Storage Caps:日常存储容量前10GB免费
Daily Download Bandwidth Caps:日常下载带宽前1GB免费
Daily Class B Transactions Caps:日常B类事务前2500次免费(B类事务包括下载、获取文件)
Daily Class C Transactions Caps:日常C类事务前2500次免费(C类事务包括创建存储桶、列举存储桶、列举文件版本、列举Keys)
Backblaze云存储+Cloudflare搭建高速安全的免费图床

所以如果我们公开的网站上面的图片都是用这种原始链接的话,那么免费额度很快就会被访客用完。而且这个链接不仅暴露了你用的云存储厂商,还暴露了你的桶名,坏蛋直接搞个脚本无限盗刷你的额度,一觉醒来又一套房没了 。。。

这时候就要用到Cloudfare了,将我们自己的域名托管到Cloudfare,使用Cloudfare代理并启用免费的CDN服务,再将域名指向自己的Backblaze云存储地址,这时候使用自己定义的链接请求就是走的Cloudfare而不是Backblaze了。

由于Cloudfare和Backblaze同属带宽联盟成员,它们之间数据传输免费,借由Cloudfare向Backblaze请求数据就不会消耗Backblaze的额度!而且Cloudfare的CDN服务还能够有效提升访问速度。

要开始下面的操作,首先你要有一个自己的域名,建议在国外注册商那里购买,这里推荐我自己最常用的NameSilo:
NameSilo购买域名,免去实名、备案的麻烦 | 晚阳Crown

5.Cloudfare添加CNAME记录

关于Cloudfare如何托管域名,在我之前写的这篇文章中有详细的步骤:
Cloudflare托管域名,免费CDN加速,免费申请有效期15年的证书 | 晚阳Crown
这里就不再赘述了。

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

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

  • 二级域名自定义,这里我设置成img
  • Target设置为你的Friendly URL的域名
  • 将Proxy status设置为开启,这样就会同时启用Cloudfare代理以及CDN服务
  • TTL默认Auto
Backblaze云存储+Cloudflare搭建高速安全的免费图床

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

Backblaze云存储+Cloudflare搭建高速安全的免费图床

现在就可以用自定义的域名访问刚才的文件了:

6.额度消耗测试

接下来做个简单的测试,对比使用原始链接以及自定义链接请求后,Backblaze云存储额度的消耗情况。

这是bat脚本,使用curl工具来发起请求,url参数为请求链接,iterations参数是请求次数

@echo off

set url=https://f005.backblazeb2.com/file/oneyangcrown-bucket/avatar.jpg
set iterations=50

for /l %%i in (1,1,%iterations%) do (
    curl -X GET "%url%"
)

测试结果:可以看到当我使用原始链接请求50次后,流量消耗了5MB,Class B事务增加了50次,而换成自定义链接再次请求50次后,额度消耗几乎没有了:

Backblaze云存储+Cloudflare搭建高速安全的免费图床
实不相瞒,我也不清楚为啥还是会有一丁点消耗 ,我预想的应该是零消耗,可能是Backblaze和Cloudfare订好的计费规则吧。
我看带宽联盟的介绍也有说是折扣或免除数据传输费用,这样看来的话,那应该就不是完全免除而是折扣,不过也非常良心了!

7.优化链接

前面我们已经更换了域名,但是链接中还是有存储桶的名称:

暴露存储桶名称是有风险的,如果坏蛋知道你的用的是Backblaze云存储,那么他是能拼凑出你的原始链接的,所以接下来要做的是把链接中的这一段/file/oneyangcrown-bucket去掉,这里用到的是Cloudflare的转换规则。

点击Cloudflare仪表板左侧的Rules>Transform Rules

Backblaze云存储+Cloudflare搭建高速安全的免费图床

选择Rewrite URL,点击Create rule创建URL重写规则

Backblaze云存储+Cloudflare搭建高速安全的免费图床

填上规则名称(随意,主要用来表明规则的用途),选择Custom filter expression

Backblaze云存储+Cloudflare搭建高速安全的免费图床

点击Edit expression

Backblaze云存储+Cloudflare搭建高速安全的免费图床

输入not starts_with(http.request.uri.path,"/file/oneyangcrown-bucket")

注意:这里第二个参数的值要改成你自己的,还有后面步骤的第一个参数
Backblaze云存储+Cloudflare搭建高速安全的免费图床

选择Rewrite to…,选择Dynamic,输入concat("/file/oneyangcrown-bucket",http.request.uri.path)

Backblaze云存储+Cloudflare搭建高速安全的免费图床

点击Deploy部署规则

Backblaze云存储+Cloudflare搭建高速安全的免费图床

这样规则就启用成功了:

Backblaze云存储+Cloudflare搭建高速安全的免费图床

现在就可以用优化好的链接访问刚才的文件了:

8.优化响应头

在浏览器中打开开发人员工具(默认快捷键是F12),可以看到在请求链接时,响应头有一些X-Bz开头的字段,这些都是和Backblaze云存储相关的,要把它们都隐藏掉。

PS:也可以使用curl工具来获取响应头信息
curl -I https://img.oneyangcrown.top/avatar.jpg
Backblaze云存储+Cloudflare搭建高速安全的免费图床

打开Rules>Transform Rules,选择Modify Response Header,点击Create rule创建响应头修改规则

Backblaze云存储+Cloudflare搭建高速安全的免费图床

选择All incoming requests,通过点击Set new header来添加一行Header配置,将类型设置为Remove,将所有X-Bz开头的字段添加进去,然后点击Deploy部署规则即可

X-Bz-Content-Sha1
X-Bz-File-Id
X-Bz-File-Name
X-Bz-Info-Src_last_modified_millis
X-Bz-Upload-Timestamp
Backblaze云存储+Cloudflare搭建高速安全的免费图床

最后再次测试、查看响应头信息中,规则配置好的字段是否都已移除

9.缓存设置

在前面的额度消耗测试中,之所以使用Cloudfare链接还会有一些消耗,其实是因为缓存控制默认是不缓存的。查看响应头中Cache-Control字段,会发现它的值是max-age=0(资源缓存的有效期限为0,也就是不缓存)。

所以每次通过Cloudfare链接去请求都无法命中CDN缓存,对应的字段就是Cf-Cache-Status的值为MISS,值为HIT才是命中缓存。

这样每次Cloudfare都会直接到Backblaze源服务器去取数据,因为Cloudfare在自己的CDN服务器上找不到缓存数据。

但得益于带宽联盟,借由Cloudfare去向Backblaze取数据,有相应折扣或免除数据传输费用,虽然官方没有明确说明,目前看来就是折扣,所以才会产生一些消耗。

所以,如果开启缓存,那么额度消耗还可以降到更低。

相关文档—Cloudfare CDN默认缓存行为:
Default Cache Behavior · Cloudflare Cache (CDN) docs

点击Bucket Settings

Backblaze云存储+Cloudflare搭建高速安全的免费图床

设置Bucket Info为{"cache-control":"max-age=5184000"},5184000秒(也就是60天),最后点Update Bucket保存设置

对于图床数据来说,图片文件不是新增就是删除,一般不会去修改一个图片文件,所以缓存有效期限可以设置更长,没必要让服务器那边频繁更新缓存数据。
Backblaze云存储+Cloudflare搭建高速安全的免费图床

查看响应头字段是否已更新过来:

Backblaze云存储+Cloudflare搭建高速安全的免费图床

缓存设置完成后,现在再通过Cloudfare链接去测试多次请求同一资源的话,只要CDN服务器上已经缓存了数据,那么后续请求就都是零消耗。

10.PicGo设置

PicGo是一个用于快速上传图片并获取图片URL链接的工具。

10.1 申请Application Key

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

Backblaze云存储+Cloudflare搭建高速安全的免费图床

配置好Application Key后,点击Create New Key创建即可

  • Allow access to Bucket(s):指定该Key允许访问的存储桶
  • Type of Access:访问权限,设置为Read and Write
  • 勾选Allow List All Bucket Names
  • Duration:有效期(单位是秒),留空就是永久有效,直到你删除它。为了提高安全性,也可以自己设定一个期限。
Backblaze云存储+Cloudflare搭建高速安全的免费图床

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

Backblaze云存储+Cloudflare搭建高速安全的免费图床

10.2 s3插件设置

首先确保你的设备已安装Node.js环境

然后在PicGo插件设置中搜索s3插件并安装:

Backblaze云存储+Cloudflare搭建高速安全的免费图床

安装完毕后左侧的图床设置会多出Amazon S3设置,对于所有与S3 API兼容的云存储均可使用。

S3设置需要填入的信息:

  • 首先是前两项,就是前面申请的Application Key,应用密钥ID—keyID,应用密钥—applicationKey
  • 桶名:桶相关信息的标题(如下图所示),也可以查看Bucket Settings中的Bucket Unique Name
  • 文件路径:{fullName},表示使用源文件名,上传到根目录
  • 地区:对应Endpoint的第二部分,比如我这里要填的是us-east-005
  • 自定义节点:填入Endpoint链接,前面加上https://
  • 自定义域名:前面在Cloudfare自己设定的域名
Backblaze云存储+Cloudflare搭建高速安全的免费图床
Backblaze云存储+Cloudflare搭建高速安全的免费图床

其它选项:

  • ForcePathStyle:no关闭
  • 拒绝无效TLS证书连接 :yes开启,如果出现证书错误可以关闭
  • ACL访问控制列表:public-read
  • Bucket前缀:false
Backblaze云存储+Cloudflare搭建高速安全的免费图床

最后在PicGo设置中,开启时间戳重命名,这样能够确保上传的每一张图片名字都是唯一的:

Backblaze云存储+Cloudflare搭建高速安全的免费图床

11.数据备份

为了防止一些不可预料的事故发生,导致数据丢失,建议定期做好数据备份。

11.1 手动备份

选择要备份的桶,点击Make Full Bucket Snapshot创建一个快照

Backblaze云存储+Cloudflare搭建高速安全的免费图床
Backblaze云存储+Cloudflare搭建高速安全的免费图床

在Snapshots中就可以看到已创建的快照,等待快照准备完成就可以下载了

Backblaze云存储+Cloudflare搭建高速安全的免费图床

11.2 群晖Cloud Sync自动备份

如果你有一台NAS,那么就可以实现自动备份,比如群晖的Cloud Sync就支持Backblaze云存储备份。

打开Cloud Sync,创建新链接,选择Backblaze B2

Backblaze云存储+Cloudflare搭建高速安全的免费图床

设置Application Key和桶名

Backblaze云存储+Cloudflare搭建高速安全的免费图床
Backblaze云存储+Cloudflare搭建高速安全的免费图床


由于同步会消耗额度,所以轮询期不要设置太短,这里我设置的是24小时

Backblaze云存储+Cloudflare搭建高速安全的免费图床

所属专题: Cloudflare CDN加速 免费CDN CDN节点 便宜CDN

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~