CloudFlare Backblaze (b2) 云存储 静态文件托管配置

随着前后端分离越来越流行,现在有越来越多的厂商提供静态文件托管服务(例如: netlify 2)。

直接使用静态文件托管服务的费用比较高 6 ,我们完全可以使用 Backblaze 云存储 和 CloudFlare CDN 来搭建自己的静态文件托管服务。

Backblaze 0 云存储的价格(存储价格 & 流量价格) 5 在各大云存储厂商中应该算是非常便宜的了,而且国内的访问速度也不错。

注解

本地测试使用的是北京联通的网络(下载可以超过 80Mbps, 上传大约 30Mbps),其他地区的速度请自行测试。

CloudFlare 更是提供了不限流量(CDN)的免费版本给用户使用。

由于 Backblaze 与 CloudFlare 1 合作 4 ,当使用 CloudFlare 代理 Backblaze 云存储时,Backblaze 不会计算传输到 CloudFlare 的流量费用。

Backblaze 官方有一篇文章介绍了怎么样使用 CloudFlare 代理 Backblaze 的静态文件 3

但是这篇文章介绍的方案中有一个缺点:

访问文件时候需要添加前缀 /file/your-bucket-name 到请求路径中。

注解

如果您的文件 index.htmldemo Bucket 中,

您需要通过: https://your-domain/file/demo/index.html 访问 index.html 文件,

而无法通过: https://your-domain/index.html 直接访问。

下面介绍的方法可以避免此问题。

配置 Backblaze 云存储

  • 创建 Backblaze 账号 并 登陆

  • 创建一个公开的 Bucket

注解

您也可以创建一个私有的 Bucket, 但是需要您手动添加 ACL 授予 CloudFlare 服务器读取权限

  • 点击 Upload 上传任意一个文件

../../_images/b2_file_upload.png
  • 查看上传文件的详情 (点击最后的 i)

../../_images/b2_file_list.png

文件详情结果

../../_images/b2_file_detail.png

Friendly URL 中的 f0002.backblaze2.com 是 CNAME 需要指向的域名

注解

如果您是 CloudFlare 企业版用户, 可以直接使用 CloudFlare 代理 S3 URL 中的域名。

配置 CloudFlare CDN

如果您是 CloudFlare 企业版用户,请优先使用 CloudFlare 企业版配置(配置简单)

CloudFlare 企业版配置

  • DNS 新建一个 CNAME 配置

指向的域名参见: 获取域名

../../_images/cf_dns.png
  • 重写 Host 字段

../../_images/cf_ent.png

您可以参见 重写 Host 字段 直接代理 S3 URL

警告

如果您没有正确重写 Host 则有可能无法正常访问文件。

CloudFlare 其他版本配置

  • DNS 新建一个 CNAME 配置

指向的域名参见: 获取域名

../../_images/cf_dns.png
  • 打开 标准化传入到源服务器的 URL

../../_images/cf_free_setting.png
  • 添加 重写 URL 转换规则

../../_images/cf_free_rewrite.png

页面规则配置 [可选]

重定向 /index 文件

../../_images/cf_page_rule.png

注解

这条规则主要用户解决直接域名访问 (也就是直接访问: https://you-host-name/) 返回错误的问题。

因为 Backblaze 仅允许访问文件,对于任何文件夹的访问都会失败。

参考资料

0

Backblaze 官方网站

1

CloudFlare 官方网站

2

Netlify 官网

3

配置 CloudFlare CDN 使用 B2 云存储文件

4

CloudFlare Backblaze 宽带联盟

5

Backblaze 价格

6

Netlify Price