Cloudflare Worker proxy Backblaze B2

NOTE:该项目基于 backblaze-b2-samples/cloudflare-b2 二创。

功能及效果

功能

效果

私有桶链接实现公开化,并通过 Cloudflare 代理 100% 省去流量。

效果示意

一、克隆项目安装依赖,并配置模版文件

  1. 克隆项目,安装依赖
    pnpm install
  2. 将配置模板复制到实际配置文件
    cp wrangler.toml.template wrangler.toml
  3. 编辑 wrangler.toml 文件,配置以下参数

name = "cloudflare-b2"
workers_dev = true
compatibility_date = "2023-09-04"

main = "index.js"

[vars]
B2_APPLICATION_KEY_ID = "<your b2 application key id>"
B2_ENDPOINT = "<your endpoint - e.g. s3.us-west-001.backblazeb2.com >"
BUCKET_NAME = "<your bucket name, $path, or $host>"
ALLOW_LIST_BUCKET = "<true or false>"
RCLONE_DOWNLOAD = "<true or false>"

二、配置KEY,并发布

  1. 复制 .dev.vars.template 文件为 .dev.vars 文件
    cp .dev.vars.template .dev.vars
  2. 编辑 .dev.vars 文件,添加 B2 密钥:
    B2_APPLICATION_KEY = "<your b2 application key>"
  3. 运行 cp .dev.vars.template .dev.vars,并填入密钥
  4. 登录 Cloudflare,构建并部署
    wrangler build && wrangler deploy

三、配置 B2 桶信息

在存储桶的元数据里添加缓存控制头,允许公共缓存 24 小时,减少回源压力:

{"cache-control":"public, max-age=86400"}

完成后,桶的响应会提示缓存系统在 24 小时内直接使用缓存版本,无需重复询问源站。

注意事项

附录

由于 Cloudflare 和 Backblaze 都属于 Bandwidth Alliance(带宽联盟),因此从 Cloudflare 回源到 Backblaze B2(即“入口流量”)也是完全免费的。

简单来说,这套方案的免费流量模式是:

flowchart TD User["用户访问
img.yourdomain.com/xxx.jpg"] subgraph Cloudflare [Cloudflare CDN] direction LR CF_Cache[边缘节点缓存] end subgraph Backblaze[Backblaze B2] B2_Storage["存储桶
(源站)"] end User --> Cloudflare CF_Cache -- "❌ 缓存未命中
入口请求:免费(带宽联盟)" --> B2_Storage B2_Storage -- "✅ 回源响应
出口流量:免费(带宽联盟)" --> CF_Cache CF_Cache -- "✅ 缓存命中
无流量费用" --> User