利用 Cloudflare+B2 零成本搭建无限流量文件存储桶

话说在前#

各位朋友都清楚,cloudflare搞了个带宽联盟,从backblaze B2通过 cf 传出的数据完全免费,不计入 B2 的带宽费用,这意味着,你可以将文件存储在 B2,然后通过cf分发,不产生任何下载流量费用

但是~B2公开存储要绑卡,私有却不用

🤓那我们可以通过Cloudflare Workers代理B2私有存储桶,利用宽带联盟的特性,享受Cloudflare带来的免费流量福利,妙哉妙哉

具体教程#

Backblaze#

  1. 先进入B2主页创建一个Backblaze账号,不用绑卡

  2. 来到Backblaze主页面,点击 创作一个桶 为什么简中要这么翻译我也不知道 ,类型选私密(官翻为私人),默认加密关闭,对象锁定也关了

  3. 然后创建一个应用密钥(App Key),并记下keyID和applicationKey

cloudflare workers#

在CONFIG中可配置多个存储桶

  1. 克隆cloudflare-b2

  2. 在仪表盘新建一个worker,选择Continue with GitHub,连接刚fork的仓库,配置环境变量

桶名模式#

  • my-bucket - 固定桶名
  • $path - 从 URL 路径获取,如 https://worker.dev/my-bucket/file.txt
  • $host - 从子域名获取,如 https://my-bucket.worker.dev/file.txt
  1. (可选)绑定自定义域名,打开worker设置,域和路由,配置你的域名就好了

问题排查#

  • 403 Forbidden检查B2密钥是否正确,存储桶权限设置
  • 404 Not Found确认文件路径正确,注意大小写敏感
  • 522超时错误检查B2端点URL是否正确,区域是否匹配
  • 存储桶不可见确保Worker配置中的存储桶名称与B2完全一致
NOTE
  1. Worker响应不能超过100MB
  2. 免费版每日10万次请求
  3. Cloudflare默认会缓存内容 可通过添加Cache-Control头控制
  4. 切勿将配置信息提交到公开仓库,切勿跑超大文件

写在最后#

那么B2的相关教程就写完了,这里要补充一些,B2免费10GB空间,若跑大文件高速率切记拿小号使,通过Cloudflare的CDN代理非CF的服务跑大流量,有概率会被Cloudflare限速或者直接ban掉,在TOS里这种属于滥用,封号不必我赘述了,ban域名可以通过使用特殊域名解决,例如ipv6反解域名毕竟cf也封不了😋

ip6-arpa

The end Ciallo~