B2 存储桶挂载 alist 和兰空图床

B2 存储桶挂载 alist 和兰空图床
雨天狂奔B2 存储桶挂载 alist 和兰空图床
B2 存储桶是指 backblaze 的对象存储服务,支持 aws s3 协议,其免费计划有 10G 的空间和 30G 每月的流量,且必须绑定信用卡才可以创建公开桶,否则只能作为私有桶自用,无法对外分享。由于 B2 和 CF 同属一个流量联盟,可以利用 CF 的 CDN 实现无限流量,且可以通过 cf worker 反代实现私有桶的公开访问。下文将一一讲解:
🏅前置条件
- 有一个 CF 账号和一个已托管的域名
- 注册一个 B2 的账号,
- 注册地址:点此直达
- 填入一个邮箱,会发送一封验证邮件给你
- 验证后设置登录密码,登录
🏅创建一个私有桶
- 进入 管理页面
- 点击创建一个桶,记录下页面的端点地址:
Endpoint
,类似于:s3.eu-central-004.backblazeb2.com
(如果要创建公开桶,则必须绑定信用卡,会扣除 1 刀的费用)
- 创建访问 ID 和秘钥
- 点击左侧
Application Keys
,再点击Add a New Application Key
,注意:是Application Key
不是Master Application Key
- 给秘钥取一个名字,权限选择
Read and Write
,其他默认,点击创建,会出现一组keyID
和秘钥
,记录下来备用。注意:秘钥只会出现 1 次
- 点击左侧
- 修改桶设定,设置缓存
- 回到管理页面主页,点击
桶设定
- 在桶信息处,填写
{"cache-control":"public, max-age=72000"}
,再点击更新桶
- 回到管理页面主页,点击
- 上传一个文件,获取直链地址,也就是下图中的
友好 URL
和S3 URL
,记录备用。友好 URL 的格式示例:https://直链域名/file/桶名称/文件名.jpg
到此,B2 存储桶的设置已经完成(公开桶也是一样,多了一道绑卡的流程),下面转到 CF 去操作
🏅先说私有桶
创建一个反代 worker
- 进入仓库 找到
worker-private.js
文件 - 复制其所有内容到一个新的 CF WORKER 中
- 设置以下环境变量
- ALLOW_LIST_BUCKET = false
- B2_APPLICATION_KEY = 你创建的应用秘钥
- B2_APPLICATION_KEY_ID = 你创建的应用 keyID
- B2_ENDPOINT = 端点域名,例如
s3.eu-central-004.backblazeb2.com
,不要 https - BUCKET_NAME = 你创建的私密桶名称,例如:b2pan123
- 绑定一个自定义域名,例如
b2.332211.xyz
- 现在你已经可以用域名访问桶内的文件了
- 用你
绑定的域名
替换友好 URL 的域名/file/桶名称
即可 - 类似这样的格式:
https://b2.332211.xyz/截图.jpg
,不要/file/桶名称
- 用你
🏅再说公开桶
你需要先绑定信用卡创建一个公开桶,创建方法和私有桶基本一致
打开 CF,在托管域名的 DNS 中设置 CNAME 记录
- 假设 CF 托管域名为
332211.xyz
- 在其 DNS 中新增一个
cname
记录 - 名称:随意,此处以
b2pan
为例 - 值:填写上面获得的
友好URL
的域名,如:f003.backblazeb2.com
,不要带 https - 得到 1 个域名:
b2pan.332211.xyz
,就是你存储桶的代理域名(或者叫自定义域名)
创建一个 worker,粘贴以下内容,修改汉字部分,部署
1 | addEventListener("fetch", (event) => { |
给 worker 项目绑定一个路由
- 区域:选择你的主域名,即
332211.xyz
- 值:填写
b2pan.332211.xyz/*
- 现在也可以通过
https://worker域名/文件名.jpg
来访问桶内的文件 - 示例:
https://b2pan.332211.xyz/截图.jpg
题外话
- 公开桶不进行 woker 反代也是可以访问桶内文件的
- 其访问格式为:
https://worker域名/file/桶名称/文件名.jpg
- 示例:
https://b2pan.332211.xyz/file/b2pan123/截图.jpg
- 但是,如果不进行反代,alist 挂载以及兰空图床挂载会失败
🏅挂载到 Alist
- 在 alist 中新建一个存储
- 驱动类型:对象存储
- 挂载路径:随便填,
最前面有个 /
- webdav 策略:302 重定向
- 根文件夹路径:/
🏅挂载到兰空图床(picgo 也是一个道理)
需要先修改兰空图床的代码
- 无论你是何种部署方式,找到
lsky-pro/app/Services/ImageService.php
文件,在约 358 行找到这一句代码
1 | bucket: $configs->get(MinioOption::Bucket), |
- 在它下面追加一行:
1 | options: ['params' => ['ACL' => '']], |
- 示例:
1 | StrategyKey::Minio => new AwsS3V3Adapter( |
- 重启兰空图床的服务
到兰空管理后台设置存储策略
不截图了,文字描述一下:
- 名称:随意
- 存储策略:Minio
- 访问域名:你的 worker 项目域名 (私有桶) 或 DNS 的 cname 域名 (公开桶),
需要前缀 https://
- AccessKey:填写 keyID
- SecretKey:填写应用秘钥
- 连接地址:你 b2 存储桶的端点地址,
需要前缀 https://
- 区域:可留空,不想留空就填写端点地址的前半截,如
eu-central-003
- 存储桶名称:填写桶名称
- 点击保存
现在已经可以通过兰空图床上传图片并生成直链了
#cloudflare #反代 #图床 #网盘
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果