使用 Backblaze B2 + Cloudflare + PicGO 搭建免费图床

简介

Backblaze B2 是一个云存储解决方案,类似于Amazon AWS S3, 前 10GB 存储是完全免费的,通常情况下,像使用 AWS S3 这类的服务,带宽费用特别高。不过,由于有了 Bandwidth Alliance(带宽联盟),Backblaze 到 Cloudflare 之间的出口是完全免费的。


Backblaze B2有一个免费套餐,它可以让你享受以下优惠:

  • 10GB的存储容量,足够您存放一些重要的文件或者媒体资料。
  • 每天1GB的流量,可以让您方便地上传和下载数据,或者通过网络浏览文件。
  • S3兼容的API,可以让您轻松地将Backblaze B2集成到您的应用程序或者服务中。
  • 支持多种工具和软件,例如Cloudflare CDN、Veeam备份、NAS设备等,可以让您提高数据的安全性、可用性和传输速度。

即使超出了免费额度,Backblaze B2也只会收取非常低的费用:

  • 每月$0.005/GB的存储费用,比Amazon S3和Microsoft Azure便宜80%以上。
  • 每月$0.01/GB的下载费用,比Amazon S3和Microsoft Azure便宜88%以上。

Backblaze配置

1.登录 Backblaze B2(可以直接使用 Google 帐号);

2.创建一个公开的存储桶(Bucket)并上传文件;
image

3.在存储桶设置的桶信息中写入 {"cache-control":"max-age=720000"},设置缓存控制时间;

4.通过查看文件详细信息获得文件地址并复制备用,如;

https://f004.backblazeb2.com/file/<存储桶名称>/<文件夹名称>/<文件名称>

image

Cloudflare配置

5.登录 Cloudflare

6.在某域名下(如果没有就注册一个,或者转入一个)进入 SSL/TLS,确保 Cloudflare 以 FULL 模式对源使用 SSL(Backblaze B2 仅支持 HTTPS 连接);
image

7.在同域名下新建一条 CNAME 解析,创建一个该域名的子域,目标地址 f004.backblazeb2.com(与文件详细中的文件地址域名相同);

配置Page Rule缓存

8.配置Page Rule缓存可以降低对backblaze的访问,在同域名下的 Rules > Page Rules 中配置页面规则以仅允许从您的域中获取您的存储桶;

https://<解析的域名>/* # 设置:缓存级别 - 缓存所有内容
image

重写URL

9.因为桶名暴露在公共下比较危险,容易让别人滥用流量。于是可以通过cloudflare进行URL重写。点击规则-转换规则-重写URL,添加一个规则,在同域名下的 Rules > transform Rules 中配置转换规则以隐藏存储桶名称,我们需要添加的规则为:当路径为/file/bucket_name,且主机名为你刚才的二级域名时,重写。
条件
http.request.uri.path ne "/file/{bucketName}" and http.host eq "{your_domain}"
重写
concat("/file/{bucketName}",http.request.uri.path)

例如:
image

这里的配置实现了{your_domain}/xxx.jpg -> https://f004.backblazeb2.com/file/{bucketName}/xxx.jpg 的转换,既不会暴露自己的桶名称,还缩短了 URL。

picgo配置

Picgo 是一个开源的图片上传工具,它可以让你方便地将图片上传到各种图床服务,包括 Backblaze B2(有 s3 插件支持)。Picgo 支持 Windows、MacOS 和 Linux 系统,它有一个简洁的界面和丰富的插件。你可以通过快捷键、拖拽、剪贴板等方式上传图片,也可以对图片进行压缩、裁剪、水印等处理。Picgo 还可以自动生成图片的 URL 和 Markdown 代码,方便你在网上引用图片。
PicGO的下载地址:https://github.com/Molunerfinn/PicGo/releases
PicGo Amazon S3 上传插件: https://github.com/wayjam/picgo-plugin-s3

10.在Backblaze的控制面板找到左侧的Application Keys,然后拉下来添加一个新key,找到密钥ID和密钥复制填入到PicGo就可以使用PicGo愉快的上传图片了

    "aws-s3": {
      "accessKeyID": "002a03abebexample000002",
      "acl": "public-read",
      "bucketName": "example",
      "endpoint": "s3.example.backblazeb2.com",
      "pathStyleAccess": false,
      "region": null,
      "rejectUnauthorized": false,
      "secretAccessKey": "K0028example96r7wtlblUQ",
      "uploadPath": "PicGo/{fullName}",
      "urlPrefix": "https://cdn.example.cn"
      },
posted @ 2024-05-23 23:58  森嵛  阅读(1149)  评论(0)    收藏  举报