Skip to content

About

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

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

Cloudflare Worker proxy Backblaze B2

Note

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

功能及效果

功能

  • 代理 Backblaze B2 S3 兼容 API 请求
  • 自动为请求添加认证签名
  • 支持 GET 和 HEAD 请求方法
  • 支持桶名通过路径或主机名传递

效果:私有桶链接实现公开化,并通过 cloudflare 代理 100% 省去流量

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

1 克隆项目,安装依赖

pnpm install

2 将配置模板复制到实际配置文件

cp wrangler.toml.template wrangler.toml

编辑 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 文件,添加 B2 密钥:

cp .dev.vars.template .dev.vars
vi .dev.vars
B2_APPLICATION_KEY = "<your b2 application key>"

2 运行 cp .dev.vars.template .dev.vars ,并填入密钥

3 登录 Cloudflare:wrangler login,构建并部署

wrangler build
wrangler deploy

三、配置 B2 桶信息

当服务器返回这个响应头时,它在告诉所有接收到该资源的缓存系统:这个资源可以被任何人(public)缓存起来,并且在接下来的 24 小时(max-age=86400)内,它都是有效的、新鲜的。在这 24 小时内,请直接使用缓存的版本,不必来问服务器。

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

一二步做完后,将如上代码复制到桶信息,至此所有配置工作已全部完成,并以部署的 worker 完成测验,测试效果如“功能及效果”标题内容所示。

注意事项

  • 不要将 B2_APPLICATION_KEY 直接存储在配置文件中,应使用 wrangler secret put 命令设置
  • 确保 B2 存储桶设置了适当的缓存控制头
  • 该 Worker 只支持 GET 和 HEAD 请求方法
  • 如果使用自定义域名,需要在 Cloudflare 控制台配置路由或自定义域

附录

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

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

  • 出口流量免费:Backblaze B2 → Cloudflare CDN
  • 入口流量免费:Cloudflare CDN → Backblaze B2
flowchart TD
    User[“用户访问<br>img.yourdomain.com/xxx.jpg”]

    subgraph Cloudflare [Cloudflare CDN]
        direction LR
        CF_Cache[边缘节点缓存]
    end

    subgraph Backblaze[Backblaze B2]
        B2_Storage[“存储桶<br>(源站)”]
    end

    User --> Cloudflare

    CF_Cache -- “❌ 缓存未命中<br>入口请求:免费(带宽联盟)” --> B2_Storage
    B2_Storage -- “✅ 回源响应<br>出口流量:免费(带宽联盟)” --> CF_Cache

    CF_Cache -- “✅ 缓存命中<br>无流量费用” --> User
Loading

About

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

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages