前言

之前图床和静态文件一直使用的腾讯云COS老用户免费套餐,因为它是大陆的服务器,而且有免费额度。免费额度是一个月免费10G流量,免费额度如下:

随着流量的增大,外网下载流量很容易超标,虽然续费也不是很贵,但就是腾讯云的欠费天天会打电话就很烦,于是就为了减轻流量消耗,我打算使用静态数据和图片文件分开。

因为域名没有备案,很多大陆的对象存储都不能使用,于是就找到Backblaze B2 + cloudflare的组合。


简介

Backblaze B2是一种云存储服务,它可以让你将无限的数据存储在云中,而且成本非常低廉。它与Amazon S3和Microsoft Azure运作方式相似,但价格却是它们的1/5。

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

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

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

因此,无论您是想要建立应用程序、备份数据、或者存档媒体内容,Backblaze B2都是一个非常合适的选择。它可以让您享受云存储的便利性和灵活性,同时节省您的开支。

最重要的是,Backblaze 和 Cloudflare 是 Bandwidth Alliance 的成员,他们之间没有数据传输费用。而cloudflare的免费计划没有这意味着您可以节省大量的流量成本,而且不用担心超出免费额度。

因为它的流量不要钱,于是拿来当做图床非常适合!


Backblaze + Cloudflare配置

准备

需要准备的东西如下:

  • 一个 Backblaze 账户(邮箱注册)
  • 一个 Cloudflare 账户(邮箱注册)
  • 一个良好国际互联网环境

创建桶与添加解析

创建桶只需要下面简单的步骤即可:

  • 首先,登录Backblaze的网站,然后点击My Account (个人账号信息),点击进入。
  • 然后,你会看到一个Buckets的选项,点击它,然后点击Create a Bucket(创建一个桶)的按钮。

  • 接下来,你需要给你的存储桶起一个名字。为了保护你的文件的安全和隐私,最好不要使用一些常见或者有意义的单词作为存储桶的名字。
  • 最后,你需要设置你的存储桶的公开性。如无特别情况,选择Public(公开)即可,因为选择私有会有些权限问题比较麻烦。第一次设置public可能需要验证邮箱。

你已经成功创建了一个存储桶,接下来,你可以上传你想要存储和分享的文件到这个存储桶中,并且获取它们的访问地址。

接下来点击upload/download(上载/下载),进入文件管理页面。

你可以在这里上传你的文件用来看URL,我这里上传了一个logo图片,用来找到桶的地址。例如:

找到Friendly URL,将里面的主机名记录下来,例如f003.backblazeb2.com

然后进入cloudflare管理页面,选择一个你的域名,在DNS中,添加一个你想要代替桶的域名的二级域名CNAME指向刚才的主机名,例如我这里用的是file.xxx

至此就成功创建了桶和添加解析。


调整与优化

SSL优化

因为桶之间通信的完整性,需要更改SSL设置为严格(Full)。

重写 URL

因为桶名暴露在公共下比较危险,容易让别人滥用流量。于是可以通过cloudflare进行URL重写。点击规则-转换规则-重写URL,添加一个规则。

我们需要添加的规则为:当路径为/file/bucket_name,且主机名为你刚才的二级域名时,重写。例如:

你可以直接使用可视化编辑器写成如图这样,或者直接点击下面的输入表达式添加如下表达式:

http.request.uri.path ne "/file/{bucketName}" and http.host eq "{your_domain}"

然后在路径重写处,添加如下代码,注意修改你的bucket_name。

concat("/file/{bucketName}",http.request.uri.path)

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

当然这里是直接在自己的域名后添加图片地址,你也可以自己定义你的转换规则。在重写那里自己添加自己规则。


删除HTTP标头(optional)

图片在响应的时候可能会带有一些信息,为了不暴露自己的桶信息,我们可以选择删除一些无用的HTTP标头(HTTP Header)。例如打开一个图片,在F12网络中查看HTTP响应头。

这些x-bz开头的都是敏感信息,我们可以通过cloudflare删除它。

规则-转换规则-修改响应头处,添加一个规则用于删除这些无用的信息。

名字同理随便填,然后选择所有传入请求。然后在修改相应的头处,添加刚才抓到那些相应头,如图:


反代配置

因为cloudflare在中国大陆的访问速度非常慢,可以考虑通过使用cdn或者比较快速的服务器进行反代。这里演示使用CacheFly的免费CDN反代图床地址。

CacheFly是一家内容交付网络(CDN) 提供商,总部位于伊利诺伊州芝加哥。它的免费CDN套餐提供了1G免费流量额度,但是在达到5T之前续费都是0元。它在大陆的访问速度还挺不错,是个不错的选择。

先注册一个账号,注册地址:https://portal.cachefly.com/signup/free2023填写账号,邮箱,密码,还有信用卡验证信息。

更新:虚拟卡已经过不了了,需要使用真实的信用卡才能注册。

注意这里的信用卡验证信息不会验证,所以可以使用虚拟卡注册,下来列出了一些虚拟卡:

   点击这里展开虚拟卡信息  ==>  展开 / 收起

例如(图非本人测试):

最后,验证邮箱,完成账号注册! 

然后在控制面板中的Configuration - Services找到你的服务点进去。然后会出现一个没有配置的提醒,我们点击进行配置。

填写要加速的域名网址,这里可以填写刚才的在cloudflare里添加的二级域名。

添加要使用的域名!如果你没有域名或者不想使用自己的域名,这里可以选择跳过,使用平台提供的域名 username.cachefly.net。这里演示使用域名file.hoyue.fun

域名添加证书,CacheFly的缺点是不提供免费的证书,所以需要你自己传一个证书传上去,你可以去zerossl等免费证书签一个上传即可。

最后到你的域名平台上,做一个CNAME到平台提供的域名(xxx.cachefly.net)上即可!

注意:证书生效时间比较慢,需要等待一会。

这样我们就添加了CacheFly作为CDN反代了,既能加速图床文件,又可以隐藏关键信息。下面是一张图片的速度测试:

itdog速度测试:

大部分地区还是挺绿的,速度还不错。


PicGO配置

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

Backblaze B2可以通过PicGO,快速上传并且生成外链以及代码,大大加速我们的使用。这里展示如何配置PicGO上传到自己桶里。

PicGO的下载地址:https://github.com/Molunerfinn/PicGo/releases

安装好,并安装S3的插件,这些已经有很多资料了,可以去网上搜索。

在配置页面,配置名随便填;

然后密钥ID和密钥我们需要回到Backblaze的控制面板,找到左侧的Application Keys,然后拉下来添加一个新key,产生的值填回去就可以了。

文件路径需要填写到具体的文件,即你上传的图片文件到什么路径的什么文件名。例如:{year}/{month}/{md5}.{extName} 就是路径为年/月/md5.type的形式,具体组合可以参考:

payload 描述
{year} 当前日期 - 年
{month} 当前日期 - 月
{day} 当前日期 - 日
{fullName} 完整文件名(含扩展名)
{fileName} 文件名(不含扩展名)
{extName} 扩展名(不含.
{md5} 图片 MD5 计算值
{sha1} 图片 SHA1 计算值
{sha256} 图片 SHA256 计算值

权限,一般是public-read,因为桶设置的是public。

接下来就是地区,这个需要参考你Backblaze B2桶中的Endpoint地址,地址中的域名二级字段就是地址,例如s3.us-west-003.backblazeb2.com,那么地区就填写us-west-003

你还可以填写自定义域名,例如填写刚才CacheFly中添加的加速域名。其他设置不变,这样配置就完成了。

配置完成了,如果是Mac系统还可以使用DropShare工具,支持直接链接Backblaze B2。


后记

这篇文章记录了使用Backblaze B2 + CloudFlare + 反代 + PicGO 实现快速免费图床的过程,希望能帮助到有需要的人。

References: