آرٹیکل ڈائرکٹری
想用 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。
ڈی این ایس
在 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 加速,体验完全不输那些收费图床。
说真的,在这个什么东西都按量收费的时代,能找到这样一套几乎免费的方案,还是挺爽的。
最后想说一句,如果你也在折腾图床,希望这篇能帮你省下那一下午的踩坑时间。
چونکہ آپ نے ابھی تک یہ پڑھا ہے، اگر آپ کو یہ مفید لگا، تو براہ کرم اسے لائک اور شیئر کریں۔ اگر آپ پہلے اپ ڈیٹس حاصل کرنا چاہتے ہیں، تو آپ مجھے بھی فالو کر سکتے ہیں! ⭐
میرا مضمون پڑھنے کے لیے آپ کا شکریہ۔ اگلی بار ملتے ہیں۔
ہوپ چن ویلیانگ بلاگ ( https://www.chenweiliang.com/ ) 分享的《Backblaze B2绑定Cloudflare自定义域名(实现 100% 免费流量)》,对您有帮助。
اس مضمون کا لنک شیئر کرنے میں خوش آمدید:https://www.chenweiliang.com/cwl-34303.html
