Artigo Diretório
想用 Backblaze B2 打造超低成本存储,却不知道怎么绑定域名?本文手把手教你 Backblaze 接入 Cloudflare 自定义域名的全过程。
详细拆解 DNS 解析、SSL 证书配置及路由规则设置,带你完美利用带宽联盟,实现 100% 免下行流量费,现在就解锁级避坑配置指南!
前几天折腾图床,想把博客的图片全部搬到 Backblaze B2 上,配合 Cloudflare CDN 做加速。
结果这一搞,就是一下午。
网上教程东一篇西一篇,不是漏了这步就是错了那步,搞得我心态有点崩。弄完之后想了想,干脆把全部过程从头到尾捋一遍,省得后面还有人跟我一样踩坑。

先说结论:这套方案确实是香。Backblaze B2 每天有免费额度,搭配 Cloudflare 的 CDN 缓存,速度够快,成本几乎为零。一个月跑下来,账单为0的那种(超过免费额度最多可能也几毛钱)。
好了,不废话了,直接开搞。
第一步,注册 Backblaze 账号和 Cloudflare 账号。这个没啥好说的,有手就行。
创建存储桶
注册完之后,进 Backblaze 后台,点 My Account 然后 Buckets,再点 Create a Bucket。
桶的名字随便起,关键是访问权限要选「公开」。其他全部默认就行。

创建好之后,你可以先传一张图片上去,看看能不能访问。点开图片详情,会看到一个链接,大概是这种格式的:
https:// f005.backblazeb2. com/file/bucket-name/xxxxx.jpg

这个域名是 Backblaze 官方随机分配的,说实话不太好看,而且直接暴露了你的存储桶信息。所以下一步,上 Cloudflare。
DNS
在 Cloudflare 里添加你的站点,如果你已经在别的地方买过域名了,就选「添加站点」然后把 DNS 改成 Cloudflare 的 nameserver,像什么 danica.ns.cloudflare.com 这种,它会有详细指引告诉你每一步怎么操作。


添加完站点之后,加一条 DNS 记录。
类型选 CNAME,名称填你想要的子域名比如 oss,目标填你刚才从 Backblaze 拿到的那个域名,比如 f005.backblazeb2 .com。代理状态记得打开那个橙色云朵,这样才能走 Cloudflare 的 CDN。

到这一步,你就可以通过自己的域名访问图片了,像这样:
https:// oss.xxx .com/file/bucket-name/xxxxx.jpg
比原来那个随机域名好看了不少,但还不够。因为 URL 里还带着 /file/bucket-name/ 这一串,既丑又暴露了你的存储桶结构,感觉不太安全。
重写URL路径
进 Cloudflare 后台,点规则然后概述,再点 URL 重写规则,新建一条规则。

规则名称随便写,请求 URL 选「不包含」,然后填 /file/ 就行了,意思是只对那些不带 /file/ 路径的请求做处理。
但如果你想让规则更精确一点,可以直接匹配你那个子域名。

最后一个框里填:
concat(/file/桶名, http.request.uri.path)
然后部署。
搞定之后,访问效果就变成了:
https:// oss.xxx.com/ xxxxx.jpg
干干净净,啥多余的东西都没有。
舒服了。
清理不必要的响应头
这一步是可选的,但我建议你做一下。
Backblaze 的响应头里带了一堆以 x-bz- 开头的信息,像什么 x-bz-file-id、x-bz-file-name、x-bz-content-sha1 这些。这些信息对外暴露了你的文件存储细节,没必要让用户看到。
操作跟刚才差不多,还是在规则那里,选「响应标头转换规则」,建一条新规则。

设置删除这些标头:
x-bz-content-sha1 x-bz-file-id x-bz-file-name x-bz-info-src_last_modified_millis x-bz-upload-timestamp
其中 x-bz-info-src_last_modified_millis 这个我目前好像没看到有,但官方教程里写了,我也加上了,总之没坏处。
然后还有一条规则也很重要。
优化缓存效率。Cloudflare 这边可以设置一个响应头规则,把 ETag 的值设成 Backblaze 返回的那几个响应头的拼接:
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])
这样设置完之后,你再回去看图片的响应头,x-bz 开头的那些全没了,而且有了 ETag 值。
干净利落。
设置缓存规则
Cloudflare 那边加一条页面规则,URL 填你解析的那个域名加上 /*,缓存级别选「缓存所有」,边缘缓存 TTL 设一个月。
Backblaze 那边也要设一下。进桶的设定,在桶信息里加一行:
{"cache-control":"max-age=720000"}这个时间你按需改,单位是秒。720000 秒大概是 8 天多,够用了。

现在再去访问你的图片,响应头里会看到:
cache-control: max-age=720000
cf-cache-status: HIT
看到 HIT 了没?说明缓存生效了。
不用每次都从 Backblaze 拉资源,CDN 直接喂给你,速度快,还省 Backblaze 的免费额度。
说到这个,Backblaze 每天虽然有免费额度,但说实话不算特别多。10GB 的存储和每天 1GB 的下载流量,如果你只是放博客图片那完全够,但要是放视频或者大文件,还是建议好好利用 Cloudflare 的缓存,别开着源站直连使劲造。
配合PicGo客户端
客户端可视化工具就看自己选用了,比如还有 ipic 等。这里主要介绍 PicGo。
去 GitHub 上搜 PicGo,找到 releases 页面下载对应版本就行。
装完之后需要装一个 S3 插件,因为 Backblaze B2 兼容 S3 的 API。

然后去 Backblaze 那边创建一个 Application Key,就在 App Keys 那个页面,点 Add Application Key,权限选读写就行。


拿到 Key ID 和 Application Key 之后,回 PicGo 的 S3 插件里填上。
这里有个坑要注意。
网上很多教程填的 endpoint 是 s3.us-west-xxx.backblazeb2.com 这种格式,但如果你跟我一样用的自定义域名绑了 Cloudflare,那就得填你的自定义域名。节点那里填 https:// oss.xxx. com,然后桶名填你刚才创建的桶名。


配完之后保存,试传一张看看。
能传上去,能通过自定义域名访问,那就对了。
查看使用量
如果你想查看 Backblaze B2 的使用量,在 Backblaze 后台的 My Account 页面就能看到,每天的存储量、下载量、B2 请求次数都列得清清楚楚,方便你随时监控有没有超标。

其实吧,这一整套搞下来,说难也不难,说简单吧也确实踩了几个坑。最烦的就是那些细节,漏一个就访问不了,或者加载慢,或者暴露信息。
我自己搞完之后最大的感受就是,这套方案真的很适合个人站长或者小博客用。成本低、速度快、配置好了之后基本不用管,一劳永逸。
而且用 Cloudflare 把 Backblaze 包一层之后,访问者看到的是你的自定义域名,响应头干干净净,还有 CDN 加速,体验完全不输那些收费图床。
说真的,在这个什么东西都按量收费的时代,能找到这样一套几乎免费的方案,还是挺爽的。
最后想说一句,如果你也在折腾图床,希望这篇能帮你省下那一下午的踩坑时间。
Já que você leu até aqui, se achou útil, curta e compartilhe. Se quiser receber atualizações em primeira mão, você também pode me seguir! ⭐
Obrigado por ler meu artigo. Até a próxima!
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) 分享的《Backblaze B2绑定Cloudflare自定义域名(实现 100% 免费流量)》,对您有帮助。
Bem-vindo a compartilhar o link deste artigo:https://www.chenweiliang.com/cwl-34303.html
