文章目录
前言
之前图床和静态文件一直使用的腾讯云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也只会收取非常低的费用:
- 每月$0.005/GB的存储费用,比Amazon S3和Microsoft Azure便宜80%以上。
- 每月$0.01/GB的下载费用,比Amazon S3和Microsoft Azure便宜88%以上。
因此,无论您是想要建立应用程序、备份数据、或者存档媒体内容,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:
Comments 9 条评论
博主 evimo
很详细,卡 picgo 后缀那里有帮助,谢谢
博主 Hoyue
@evimo 感谢评论,欢迎多多交流
博主 1287766992
自定义域名,每次上传都会把桶名加在后面怎么办,导致每次都要在连接中把桶名删除才能正常访问
博主 Hoyue
@1287766992 我是在cloudflare里面重写URL把桶名去掉了,你可以参考看看文章中的设置试试?如果还有什么问题,你也可以附上配置图,通过telegram或者邮箱联系我
(=・ω・=)
博主 海星
感谢大佬的分享 昨天已经把图床从github迁过来了
博主 Hoyue
@海星 我原来用的vercel部署GitHub项目,图片传到GitHub上速度还行。就是国庆的时候被墙了就很难受,我的B2图床倒是没事
博主 嫖嫖乐
无敌,very~详细了。 甚至还有新发现,CacheFly!
博主 嫖嫖乐
哈哈,可惜注册cachefly时,填写完信用卡的内容点击提交后,就全页面空白了。 刷新后又要填写,不知道哪里卡住了。可惜可惜哦,值得关注。
博主 Hoyue
@嫖嫖乐 我这边尝试了一下,cachefly现在注册会向信用卡扣款$1,所以会验证卡的有效性,虚拟卡过不了了,可能还是得用真实的信用卡,文章内容已修改,感谢评论哦
(`・ω・´)