backblaze接入cloudflare自定义域名完整过程

backblaze 免费 10G 存储空间，接入 cloudflare 之后还免下载流量。

1、在 backblaze 新建一个存储桶。

然后在里面随便上传一个文件，打开看看里面的友好 URL 地址。

2、在 cloudflare 去解析 CNAME 域名

目标就是 backblaze 存储桶提供的友好 URL 地址，比如我的：f005.backblazeb2.com

特别注意：如果你 cloudflare 的域名走了合作伙伴托管区域，比如接入了梦牛等这种第三方平台，同时还是 CNAME 接入方式，也就是无法在 cloudflare 后台直接添加解析的，那就无法正常使用，比如 ssl、规则都不行。

应该有方法解决吧，只不过我在官网没搜索到，有知道的小伙伴可以告知。

3、设置 cloudflare 域名的 ssl

官方建议设置为：完全 (严格)，但是我习惯了：完全。

也可以在规则里面单独设置。

4、在 cloudflare 设置域名的规则

规则 1：重写 URL 路径，也就是隐藏 backblaze 存储桶的名称

规则 – 转换规则 – 新增重写 URL 规则：

因为是用的二级域名，所以选：自定义筛选表达式，当主机名、URL 等于或者包含你解析的域名都行。

然后重写规则：选择 Dynamic 动态

concat("/file/jingxialai",http.request.uri.path)
#/file/ 是 backblaze 固定的文件夹名称
#jingxialai 换成你自己的存储桶名称
#之后保存

规则 2: 从响应中删除 HTTP 标头

规则 – 转换规则 – 新增修改响应头规则

增加删除规则，标头名称：

x-bz-content-sha1
x-bz-file-id
x-bz-file-name
x-bz-info-src_last_modified_millis
x-bz-upload-timestamp
其中 x-bz-info-src_last_modified_millis 现在好像是没有的，但是官网教程里面有，所以我也加上了。

其他和之前的重写 URL 设置一样就行，然后保存。

规则 3: 通过 ETag 和缓存控制 HTTP 标头优化缓存效率

规则 – 转换规则 – 响应头规则

就在刚才的 HTTP 响应头修改规则里面新增一条就行：

设置动态 – 标头名称填写：ETag

值添加：

concat(http.response.headers["x-bz-content-sha1"][0], http.response.headers["x-bz-info-src_last_modified_millis"][0], http.response.headers["x-bz-file-id"][0])

现在我们再去看看我们上传到 backblaze 里面的图片响应头信息：

没有了 x-bz 开头名称并且有了 etag 值。

5、设置 backblaze 存储桶和 cloudflare 域名的缓存规则

按需设置就行。

cloudflare 规则 – 新增一个页面规则

URL：解析的域名 /*

缓存级别：缓存所有

边缘缓存 TTL：我设置的 1 个月

backblaze 存储桶设置缓存时间

桶设定 – 桶信息：720000 这个时间可以自己修改，以秒为单位。

{"cache-control":"max-age=720000"}

现在我们去访问上传到 backblaze 里面的文件，看响应头信息：

cache-control: max-age=720000
cf-cache-status: HIT（代表是缓存成功了）

差不多就结束了，至于要不要设置防盗链，看你需要了。