CJW

CJW 个人博客

分享网络知识和知识记录
github
email

通过CloudFlare转换规则隐藏Backblaze B2的bucket路径

在早期的一篇文章《Backblaze B2,低价的对象存储,支持接入 CloudFlare CDN》介绍了 Backblaze B2 接入 CloudFlare CDN 的教程,但存在一个缺陷,B2 的域名会将 bucket 名称暴露出来,会导致你的 CloudFlare 加速域名任何人都可以用来加速 Backblaze B2 或者直接访问源站进行盗刷,不仅不友好,还不安全。

举个例子:

B2 提供的域名格式为:https://f002.backblazeb2.com/file/bucket/xxx.txt
使用 CloudFlare 加速后域名为https://b2.domain.com/file/bucket/xxx.txt
假如我在 B2 创建了一个 bucket 名称为 xiaoz,那么我就可以访问你的 CloudFlare 域名https://b2.domain.com/file/xiaoz/xxx.txt,从而导致占用你的 CloudFlare 流量。

或者我直接访问你的源站:https://f002.backblazeb2.com/file/xiaoz/xxx.txt 进行流量盗刷。

这篇文章的目的就是去掉 B2 极其不友好的 URL 路径,隐藏 file/bucket/ 这一串内容。

前提准备
如果您的 B2 域名还未接入 CloudFlare,请参考这篇文章:https://blog.xiaoz.org/archives/13256 进行接入。

创建转换规则
CloudFlare 后台 - 规则 - 转换规则 - 创建转换规则 - 重写 URL

继续填写:

规则名称:随便写
字段:选择 “主机名”
运算符:选择 “等于”
值:填写您在 CloudFlare 上对 B2 的加速域名(你自己的域名)

然后路径选择 “重写到 - 选择 Dynamic”,并填写:

concat("/file/bucket", http.request.uri.path)
其中 bucket 改成你自己的存储桶名称,然后选择部署就行了。

优化后
优化前我们的访问路径为:https://b2.domain.com/file/bucket/xxx.txt

优化后的路径为:https://b2.domain.com/xxx.txt

可以看出去除了 file/bucket/

去除不必要的响应 Header
Backblaze B2 会在请求的响应头中添加以下几个 header 参数:

x-bz-content-sha1
x-bz-file-id
x-bz-file-name
x-bz-upload-timestamp
虽然影响不大,但是一看这些参数就知道你用的 B2,并且这些参数头一般拿来也没啥用,我们也可以通过 CloudFlare 的重写规则将其去掉。

依然在转换规则那里 - 创建转换规则 - 修改响应头。

主机名那些和上面的一样:

然后那里全部选 “Remove”,最后填写上面那几个 header 头部即可。

总结
CloudFlare 与 Backblaze B2 之间的传输流量是免费的,通过 CloudFlare 转换规则可以隐藏 bucket 名称,让 URL 更加友好,同时一定程度上防止了 Backblaze B2 被盗刷的风险。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。