对文章中图片的处理一直令我感到头痛。从最开始的放在本地,到使用 Github 图床,到使用七牛云 Kodo 图床
Github 图床的缺点是访问速度慢,Kodo 倒是配好之后一直很稳定,我已经使用很长一段时间了,因为一些特殊原因,还是决定忍痛对 Kodo 图床进行迁移,长痛不如短痛
在网上寻找合适的图床方案时,我发现了 BackBlaze + Cloudflare 这一解决方案
1 创建 Public Bucket
首先创建一个 BackBlaze 账号,之后在 B2 Cloud Storage 中创建 Bucket
需要修改两个地方:
- 一个是填写一个 Bucket Name,这个很重要,可以在 这里 创建一个短密码填到这个地方
- 另一个地方是将 Files in Bucket are 这里选择 Public
其他的地方不用动
第一次使用时,这里需要充 1 美元,充值方式支持 Visa 卡,但不支持 Paypal,使用国内办理的 Visa 卡也是可以的
2 获取 Bucket 信息
创建好 Bucket 后,上传一张图片,点击图片后,在弹出的 Details 框中找到 Friendly URL:
1 | https://f005.backblazeb2.com/file/a-unique-bucket-name/test.jpg |
之后使用自己域名访问时需要用到上面的东西:
f005.backblazeb2.com
(这个可能会有差异,以自己的为准)file/a-unique-bucket-name
(这个就是固定的 file 和之前设置的 Bucket 名)
3 配置 Cloudflare
想要配置 Cloudflare 之前,首先要有一个 CF 账号,注册账号无需赘言
3.1 添加站点
将之前购买的域名添加到 CloudFlare 中,以 SpaceShip 为例,在购买域名后,只需要将 SpaceShip 中域名的 Nameserver 改成从 CF 得到的就可以了
之后就等待站点激活即可
3.2 设置 SSL 加密模式
将 SSL 加密模式设置为 完全(严格)
😉 这个设置是必要的,以下设置让 CF 服务器通过 HTTPS 与 BackBlaze 发送请求,若不做该设置,将会出现返回 404 的情况
3.3 配置二级域名访问图片
3.3.1 添加域名解析记录
首先,在 DNS 解析中,添加一条 CNAME 记录,将一个二级域名(例如 img.jmingz.top)指向之前获取的 Bucket 信息中的主机名 f005.backblazeb2.com
,并开启 CF 代理(开启橘色小云朵)
3.3.2 添加转换规则
添加转换规则可以实现图片的访问路径缩短,隐藏 Bucket 名:
https://f005.backblazeb2.com/file/a-unique-bucket-name/test.jpg
==> https://img.jmingz.top/test.jpg
首先进入转换规则的编辑页面:规则 => 转换规则 => 重写 URL
下面填写的是 concat("/file/a-unique-bucket-name",http.request.uri.path)
3.4 防盗链设置
😄 实现可在本地正常显示图片并且在白名单站点中正常显示
进入防火墙的自定义规则编辑中:安全性 => WAF => 自定义规则
创建第一条规则:
创建第二条规则:
3.5 设置页面规则
进入页面规则设置界面:规则 => 页面规则
URL 中填写 https://your-second-domain/file/a-unique-bucket-name/*
进入到 BackBlaze 的 Bucket 设置中,在 Bucket info 中填写 {"cache-control":"max-age=720000"}
4 去除不必要的响应 Header
TODO
5 PicGo 设置
PicGo 需要安装一个插件
另外,需要配置的项有:
- 应用密钥 ID(在 BackBlaze 中的 Application Keys 生成)
- 应用密钥(在 BackBlaze 中的 Application Keys 生成)
- 桶名
- 文件路径(默认值就可以了)
- 自定义节点(endpoint)
- 自定义域名(填之前做过解析的二级域名)
注意:自定义节点前要加
https://
否则会报错