起因

因为我很久之前就在使用兰空了,当时是直接默认存储扔到本地的,反正也没有啥问题,还很方便,但那台服务器快到期了。所以我就打算迁移,先来说说虽然为什么不用CF的R2存储,原因是我尝试了很多种办法,但这个兰空图床对于我自己而言就是链接不上,很烦人,所以找到了也是S3协议的backblaze作为我后面使用的存储策略。

为什么要使用 backblaze

有以下几点

  1. 所有用户无需信用卡都有10gb存储
  2. CloudFlare出去的流量每个月免费1TB
  3. 价格十分便宜,你可以去他们的官网了解更多:官网地址价格

开始准备前

在开始之前你需要知道和准备的东西:

  1. 兰空图床的版本确保是和我在同一个版本在V2.1
  2. 有一个Cloud Flare的账号
  3. 有一个backblaze的账号
  4. 你需要有一个域名(应该看到这一篇博文的人都有吧)
  5. 在后面的内容CloudFlare 将被简写成CF
  6. 在后面的内容backblaze将被简写成B2

正片开始

B2创建存储桶

请访问:https://secure.backblaze.com/b2_buckets.htm 进入B2创建页面。再此页面往下翻,可以更改语言。

起一个你的桶的名字,你需要把桶的档案改成公众

很好你现在应该已经创建好桶了并选择上传/下载

你需要上传一个文件用作与测试,知道你的桶的地址。

你需要记得友好地址以及S3地址

  • 友好地址你需要记住到你的桶名
  • S3 地址你只需要记住S3的域名即可。

CF的配置

B2只允许https,并且需要有效证书的验证,你需要检查以下你的CF上的 SSL/TLS –> 概述调成完全严格

你现在需要解析一个CNAME的域名,例如img.example.com,解析到友好URL的域名上,如果你解析成功你可以试着访问你的域名并带上桶名/以及文件名进行访问。

到这里你应该也许已经明白我们需要后面要配置什么了,我们需要使用CF的 规则–>转换规则—>URi 重写。

我这边提供一下表达式,需要把<>的内容替换成你自己的包括<>

1
(http.request.uri.path ne "/file/<桶名>" and http.host eq "<你的域名>")

这里提供一些Dynamic的表达式写法

1
concat("/file/<你的桶名>",http.request.uri.path)

经过这样一改,你可以现在尝试以下,不加任何东西直接使用域名+上文件名再试试。

兰空图床更改策略

你可以参考这一篇官方的 discussions 进行改写,我就不再重复造轮子了。

我在这边贴一张我自己配置的图,方便各位佬进行参考。

  • 存储策略选择Minio
  • 区域根据S3的URL 域名中就有写。

引用

兰空Github Discussions:https://github.com/lsky-org/lsky-pro/discussions/448

致谢

感谢 YanMOE站长 发现本篇文章的错误。(已经修改)