Backblaze B2 + Cloudflare 搭建免费图床
Backblaze 部分
注册 Backblaze 账号
输入 邮箱、密码 进行注册;
创建 B2 Bucket(存储桶)
点击右上角
My Account
进入后台;选择
Buckets
(桶),然后点击Create a Bucket
,创建一个存储桶。
Bucket Unique Name
(桶唯一名称):自己取一个名称;Files in Bucket are
(桶里面的档案是):Public
(公众);
- 点击
Create a Bucket
(创作一个桶)完成创建;
获取存储桶所在服务器
回到
Buckets
(存储桶) ;在刚刚创建的存储桶上,点击
Upload/Download
(上传/下载);上传一个任意文件到存储桶中;
然后点击刚上传文件后面的
i
(information
,信息);记住
Friendly URL
的前部分,如:https://f004.backblazeb2.com/
Cloudflare 部分
注册 Cloudflare 账号
输入 邮箱、密码 进行注册;
将域名接入 Cloudflare
在
Websites
(网站)标签,点击Add a Site
(添加站点)输入你的有效域名并点击
Add site
(添加站点)Select a plan
(选择计划):选择最下方的Free
$0(0 美元),点击Continue
(继续)到你的域名服务商将
DNS
服务替换未cloudflare
的
(Nameserver 1
)名称服务器 1:aldo.ns.cloudflare.com
(Nameserver 2
)名称服务器 2:leanna.ns.cloudflare.com
解析子域名
在接入的域名下,点击DNS
标签,点击Add record
(添加记录)
类型 | 名称 | 内容 |
---|---|---|
CNAME | img | f004.backblazeb2.com |
类型: 为CNAME
;
名称: 为子域名,一般有以下几种:
img
images
image
assets
(不仅存放图片,还有存放css
、js
)static
(不仅存放图片,还有存放css
、js
)
内容: 为此处第5条我们获取的存储桶所在服务器;
输入后点击Save
(保存);
完成后确保Proxy status
(代理状态)下的橙色保护盾是开启的状态, 这代表请求是通过了Cloudflare
的CDN
代理;
Cloudflare
默认的 TTL
将被设置为 auto
(自动);
SSL/TLS
在接入的域名下,点击SSL/TLS
标签,选择Overview
(概述)设置为Full (strict)
【完全(严格)】
添加规则
我们需要新建2
个规则:
在接入的域名下,点击Rules
(规则)标签,选择Page Rules
(页面规则);
点击Create Page Rule
(创建页面规则)
【规则一】
- URL: https://解析的名称.域名/file/存储桶名称/*
1 | 例如:https://img.baidu.com/file/blog/* |
Pick a Settin(选取设置):
Cache Level
(缓存级别)Select Cache Level(选择缓存级别):
Standard
(标准)
【规则二】
- URL: https://解析的名称.域名/file/*/*
1 | 例如:https://img.baidu.com/file/*/* |
Pick a Settin(选取设置):
Forwarding URL
(转发URL)Select status code(选择状态代码):
302 - Temporary Redirect
(302 - 临时重定向)Enter destination URL(输入目标 URL ):
https://secure.backblaze.com/404notfound
最后的 Backblaze 设置
打开
Backblaze
并登录,点击右上角My Account
进入后台;选择
Buckets
(桶),点击Bucket Settings
(桶设定)在
Bucket Info
(桶信息)输入以下内容:
1 | {"cache-control":"max-age=43200000"} |
点击
Update Bucket
(更新桶);点击
CORS Rules
(CORS规则)选择Share everything in this bucket with all HTTPS origins
(与所有HTTPS来源共享此存储桶中的所有内容)点击
Update CORS Rules
至此,我们就拥有了一个自定义域名的免费图床。
地址形式为: https://解析的名称.域名/file/存储桶名称/上传的文件名
1 | 例如:https://img.baidu.com/file/blog/test.png |
精简链接
目的
去掉URL
中无用的/file/<bucket-name>/
部分;
原链接: https://img.baidu.com/file/blog/test.png
精简链接: https://img.baidu.com/test.png
创建 Workers 服务
- 在
Cloudflare
控制台,点击Workers
标签,选择Overview
(概述);
首次使用按提示开通即可;
- 点击
Create a Service
(创建服务),输入自取Service name
(服务名称)
Select a starter
(选择启动器):HTTP router
(HTTP路由器)
点击右下
Create service
(创建服务) →Worker
右侧的Quick edit
(快速编辑)清空窗口内默认的内容,并粘贴以下内容到窗口内;
1 | 'use strict'; |
粘贴前请修改b2Domain
和b2Bucket
这两个变量的值;
b2Domain
:为图床的二级域名;
b2Bucket
:为bucket
存储桶的名字;
- 点击
Save and Deploy
(保存并部署),然后返回
添加 Worker 路由规则
使访问subdomain.domain.com/*
时,请求先由worker
来处理。
在接入的域名下,点击
Workers Routes
(Workers路由)标签;点击
HTTP Routes
(HTTP 路由)右侧的Add route
(添加路由);
- Route(路由): 解析的名称.域名/*
1 | 例如:img.baidu.com/* |
Service(服务): 选择上一步创建的服务名称;
Environment(环境): 保持默认即可;
- 点击
Save
(保存),完成设置。
防盗链
在接入的域名下,点击
Security
(安全性)标签,选择WAF
;点击
Firewall rules
(防火墙规则)右侧的Create firewall rule
(创建防火墙规则)
Rule name
(规则名称): 自己取一个名称
When incoming requests match…(当传入请求匹配时…)
Field
(字段):Referer
(引用方)Operator
(运算符):does not contain
(不包含)Value
(值):博客地址,如:ll.sc.cn
点击右侧And
,在下一行继续;
Field
(字段):URI Full
(URI 完整)Operator
(运算符):contains
(包含)Value
(值):https://解析的名称.域名,如:https://img.baidu.com
Then…(则…)
Choose an action
(选择操作):Block
(阻止)
最后点击Deploy firewall rule
(部署防火墙规则)完成设置;