简介

什么叫图床

图床就是将图片上传到相关服务商或者个人服务器,通过上传文件的网络地址进行远程访问。可以方便快速的将图片插入到文章中,方便后续图片二次使用、迁移、分享。

常用图床的几种方式

  1. VPS自建:通过购买服务器搭建图床程序,比如easyimage,lsky-pro等。
    优点:方便,快捷,空间大
    缺点:速度取决于vps的线路,迁移服务时大量数据需要迁移。
  2. 云端oss储存+cdn
    优点:稳定,速度快
    缺点:付费(腾讯cos/阿里oss+cdn(cdn需备案))。免费的额度有限(Backblaze B2 + Cloudflare)。
  3. Github + JsDelivr(cdn)
    优点:github绝对稳定,jsdelivr充当github的cdn加速
    缺点:虽然有加速,速度也算不上快,属中等。

本篇介绍Backblaze B2 + cloudflare +Picgo 方案

Backblaze B2免费用户有10GB的存储额度,和1天1GB的流量,一个月30GB的流量,对于小网站基本足够,超额的存储是$0.005/GB/月,流量是$0.01/GB。Cloudfare和Backblaze同属带宽联盟成员,借由Cloudfare向Backblaze请求数据基本不会消耗Backblaze的额度。这样通过cloudflare访问,只会想好的B类和c类的访问请求额度。

  • Daily Storage Caps:日常存储容量前10GB免费
  • Daily Download Bandwidth Caps:日常下载带宽前1GB免费
  • Daily Class B Transactions Caps:日常B类事务前2500次免费(B类事务包括下载、获取文件)
  • Daily Class C Transactions Caps:日常C类事务前2500次免费(C类事务包括创建存储桶、列举存储桶、列举文件版本、列举Keys)

实现目的

1.自由在MD,网站中引用图片(picgo上传)
2.防止恶意被刷流量(毕竟超出流量要付费)

  • 自定义域名代替原域名(出现问题直接断开和原域名之间的跳转)
  • 删除在url中真实路径名(backblaze访问路径里面含有储存桶名)
  • 删除通过cloudflare响应头中包含的原域名的信息(backblaze响应头中含有文件id等信息)

1. 配置 Backblaze

1.1 注册 backblaze B2

登录 'https://www.backblaze.com/get-started'

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_图床

输入邮箱地址和密码

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_02

之后就可以用注册邮箱和密码登录了'https://secure.backblaze.com/user_signin.htm'

登录后验证邮箱地址,否则无法创建外部访问的桶。
输入 https://secure.backblaze.com/account_settings.htm?verifyEmail=true

发送邮件后,点击链接验证即可,不需要输入验证码

1.2 创建一个储存桶(storage bucket)

储存桶就相当于一个硬盘,用来存储上传的文件。

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_03

输入名字,将访问改为公众。这里的名字就是访问的一部分路径

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_04

1.3 修改桶的CORS参数

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_图床_05

修改选项与所有HTTPS来源共享此存储桶中的所有内容。

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_图床_06

1.4 修改桶的缓存时间

在桶设定里面-桶信息里面键入

{"cache-control":"max-age=2600000"}

将缓存时间设置为30天,共2600000秒。
这里可以设置为500天(432000000秒),作为图床图片要么是新增要么是删除,同一名字不同内容的文件几乎没有,缓存可以设置时间长一些。

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_07

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_08

2. 配置 CloudFlare

2.1 自定义域名代替backblaze原域名

击上传的文件,然后就可以看到文件的URL链接了,这个链接就可以分享出去了。

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_09

点击上传的这个文件,查看属性值,将Friendly URL里面的地址。

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_10

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_11

https://f005.backblazeb2.com/file/imgggg/a1d8f60546a444ebb9395df0ae26eb65.md

其中f005.backblazeb2.com 就是backblaze的源域名,将自定义域名替换掉,变成img.dreamwork.top/file/imgggg/a1d8f60546a444ebb9395df0ae26eb65.md

登录cloudflare,点击添加站点(域名必须用cloudflare解析,要在域名商哪里修改),将自定义域名通过CNAME指向f005.backblazeb2.com,代理模式必须打开。

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_12

点击SSL/TLS,将加密模式从“flexible”更改为“full”,

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_13

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_14

现在就可以通过自己的域名访问刚才上传的,https://img.dreamwork.top/file/imgggg/a1d8f60546a444ebb9395df0ae26eb65.md

2.2 添加页面缓存

为了减少对backblaze的访问频率和访问失败的情况下进行跳转,需要再cloudflare里面添加页面规则进行页面缓存和跳转。

  1. 点击域名左侧概述,在整个页面的右边栏的中下位置有个页面规则,点击。
  2. 免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_15

  3. 创建页面规则
  4. 免费搭建高速图床!B2+Cloudflare+PicGo全攻略_图床_16

  5. 填入要缓存的路径(即访问路径),选取设置为 缓存级别 - 缓存所有内容img.dreamwork.top/file/imgggg/* 注意路径后面要跟着星号
  6. 免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_17

  7. 保存页面规则

2.3 隐藏文件的真实路径

由于只是将域名进行了重定向,文件路径还是会暴露出来,有心人还是会顺着路径进行暴力刷流量,这里就需要隐藏路径来避免。
将访问地址https://img.dreamwork.top/file/imgggg/a1d8f60546a444ebb9395df0ae26eb65.md 变成 https://img.dreamwork.top/a1d8f60546a444ebb9395df0ae26eb65.md

注意:该方法会增加访问的时间

在左侧任务栏选中转换规则。

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_18

重写URL下面点击创建规则。

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_19

  1. 输入规则名,名称随意
  2. 点选自定义筛选表达式,在下方输入
  • 主机名 = img.dreamwork.top 并且同时 url完整不能为 https://img.dreamwork.top 并且 url路径开头不能为 /file/imgggg
  • url路径开头不能为 /file/imgggg 优化规则 这样在输入完整路径名时也可以访问文件,而不会出现 /file/imgggg/file/imgggg 的情况。
# 填入的是文件名和域名之间的路径地址, 域名为自定义的域名
(http.host eq "img.dreamwork.top" and http.request.full_uri ne "https://img.dreamwork.top" and not starts_with(http.request.uri.path, "/file/imgggg"))

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_20

再在路径下面选择重写到,选择动态,然后输入

concat("/file/imgggg", http.request.uri.path)

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_图床_21

  1. 点击部署,等规则生效。之后就可以通过域名+文件名的方式进行引用(https://img.dreamwork.top/a1d8f60546a444ebb9395df0ae26eb65.md)。

2.4 删除响应头所暴露的信息

访问文件时,backblaze响应数据包,数据包响应头会带有文件的一系列信息,这部分信息会泄漏文件的来源等信息。通过cloudflare代理时,是由cloudflare转发,需要设置规则将这部分信息在转发时删除。

在左侧任务栏选中转换规则。

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_图床_22

在修改响应头下面,创建规则。

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_23

  1. 输入规则名,名称随意
  2. 点选匹配规则为 所有传入请求
  3. 免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_24

  4. 将下面几个带有X-Bz的响应头填入规则内,选择删除这几个标头。
X-Bz-Content-Sha1
X-Bz-File-Id
X-Bz-File-Name
X-Bz-Info-Src_last_modified_millis
X-Bz-Upload-Timestamp

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_25


4.点击部署,等规则生效。之后通过再访问文件响应头里面就没有backblaze的标识信息了。

3. 配置picgo

3.1 申请Application Key

在Backblaze左侧任务栏点击Application Key

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_图床_26


在右侧最下方点击Add a New Application Key

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_图床_27

  1. 输入秘钥名 img-app-token,
  2. 选择已经存在的桶名imgggg,
  3. 访问权限勾选 read and write
  4. 勾选 allow listing all bucket names
  5. 创建秘钥。点击Create New Key

记录keyID和秘钥applicationKey,只会显示一次,界面刷新就不存在了。忘记的话重新来一遍流程再创建一个新的Application Key即可。

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_服务器_28

3.2 安装picgo s3插件

本机上确保已经安装node.js,没安装的话点击https://nodejs.org/en网址进行下载安装。
下载picgo进行安装。https://github.com/Molunerfinn/PicGo/releases 下载picgo插件s3,https://github.com/wayjam/picgo-plugin-s3/releases

这里可能会遇到插件装不上的情况,要么是点安装过了一会没反应,要么是加载错误
一般这种情况都是NPM模块安装有问题

解决方法:

  1. 切换到app的picgo目录
    一般C:\Users\XXX\AppData\Roaming\picgo目录;XXX表示你的用户名
# 切换目录
cd C:\Users\administrater\AppData\Roaming\picgo
  1. 设置NPM源为国内源
# 在命令行输入
npm config set registry https://registry.npm.taobao.org
# 验证命令,返回 https://registry.npm.taobao.org,说明镜像配置成功。
npm config get registry
  1. 切换到app的picgo目录并安装模块
# 安装s3模块,一般picgo模块格式为 picgo-plugin-xxx
npm install picgo-plugin-s3
  1. 重启picgo即可。

3.3 配置picgo s3

picgo面板左侧选amazon s3 ,右侧点击编辑配置。

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_图床_29

命名配置名,将backblaze的keyid,秘钥,和桶名填入。

由于自定义的引用地址为https://www.xx.com/picname.jpg,所以在文件路径这里填入{fullName}

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_图床_30

  • 自定义节点在backblaze-桶的最下方有个endpoint将地址填入自定义节点。
  • 自定义域名:最后会生成的图片域名,和图片上传位置没有直接关系,填入自己购买的域名。
  • ForcePathStyle:no关闭,否则会在最终路径里面显示有桶名。
  • 拒绝无效TLS证书连接 :yes开启,如果出现证书错误可以关闭
  • ACL访问控制列表:public-read
  • Bucket前缀:false

确定就配置成功。
最后在PicGo设置中,开启时间戳重命名,这样能够确保上传的每一张图片名字都是唯一的。
上传界面选amazon s3的上传配置,即可使用backblaze图床。

4. 数据备份

为了防止一些不可预料的事故发生,比如服务器被删除,产品到期,欠费导致数据无法使用或者丢失,最好做好备份以方便重新搭配

4.1 手动备份

在backblaze里面选择要备份的桶,点击Make Full Bucket Snapshot创建一个快照

免费搭建高速图床!B2+Cloudflare+PicGo全攻略_图床_31


在Snapshots中就可以看到已创建的快照,等待快照准备完成就可以下载了

4.2 自动备份

自动备份就是通过keyid和秘钥来定时下载内容,找一个同步软件,比如群辉或者goodsync等,按照webdav的方式同步即可。
要注意自动同步会消耗流量。