前言

什么是图床

将图片上传到服务商或个人远程服务器,通过网络地址直接访问的技术方案。适用于以下场景:

  • 快速将图片插入文章内容
  • 统一管理图片资源
  • 便于图片迁移与分享

技术方案选择

Cloudflare R2

  • 免费额度:10GB/月存储容量(按30天日均存储峰平均值)
  • 超额单价:$0.015/GB/月
  • API免费限制
    • 每天100万次B类事务(文件下载、元数据查询等)
    • 每天1000万次A类事务(创建/列举存储桶等)

PicGo客户端

  • 开源图片上传工具
  • 支持S3协议适配
  • 剪贴板自动复制链接

准备事项

账号准备

  1. 注册Cloudflare账号
    • 需绑定付费计划(选择0元免费层级防止误扣费)
  2. 完成账号二次验证

域名准备

  • 注册域名
    • 建议使用低成本年费域名(如.xyz域名)
    • 可使用二级域名拆分(例:img.yourdomain.com)
  • 托管方案
    • 若域名不在CF托管,需设置NS/CNAME记录转发

搭建流程

Cloudflare R2 配置

打开Cloudflare,选择R2对象存储
R2对象存储

2. 创建储存桶

创建一个存储桶

桶设置

PS:如果域名不托管在CloudFlare,可以单独托管二级\三级域名,只需要给二级域名添加一条NS记录指向原托管即可。

* 选择设置
* 选择位置:根据自己位置选择
* 添加自定义域,继续
* 最好再选择:连接域
* R2.dev 子域:允许访问
* 之后就能浏览器 https://<自定义域名>/<文件名>访问存储桶里的文件了。

桶设置

连接域

允许访问

子域名

API令牌生成

1. 管理API令牌 
2. 创建API令牌
3. 创建API令牌完成
   1. 输入令牌名称
   2. 选择权限
   3. 指定存储桶
   4. 完成

管理API令牌


创建API令牌


创建API令牌完成


令牌密钥


picGo设置

在插件设置中,添加常用插件。

S3插件:用来登录S3的图床

PicGo

安装好后,图床设置 => Amazon S3 => 新增设置

添加图床设置

这里有几项配置需要尤其注意。

应用密钥 ID,填写 R2 API 中的 Access Key ID(访问密钥 ID)
应用密钥,填写 R2 API 中的Secret Access Key(机密访问密钥)
桶名,填写 R2 中创建的 Bucket 名称,如创建R2的桶的名字 img
文件路径,上传到 R2 中的文件路径,这里选择使用 {fileName}.{extName} (或者{fullName})来保留原文件的文件名和扩展名。
自定义节点,填写 R2 API 中的「为 S3 客户端使用管辖权地特定的终结点」,即 xxx.r2.cloudflarestorage.com格式的 S3 Endpoint
自定义域名,填写上文生成的https://xxx.r2.dev格式的域名或自定义域名,如我配置的https://img.a.com
ForcePathStyle:no关闭,否则会在最终路径里面显示有桶名。
拒绝无效TLS证书连接 :yes开启,如果出现证书错误可以关闭
ACL访问控制列表:public-read
Bucket前缀:false

完成上述配置后,我们就可以在「上传区」直接拖入文件进行图片上传了,如上传后显示无误则为配置成功,生成的链接会自动在系统剪贴板中,直接在需要的地方粘贴即可。

如果配置确定没有问题,上传失败,请重启PicGo再试

设定缓存规则

缓存规则一般设定两个:浏览器缓存和边缘缓存。
浏览器缓存:访问后,所需文件储存在浏览器的本地目录,在一段时间内,再次访问优先访问本地文件
边缘缓存:访问后,缓存在最近的CDN存一份,在一段时间内,优先访问CDN中的文件

  • 进入域名页面->规则->页面规则
  • 部署页面规则
    页面规则

部署页面规则

防盗链设置

只能通过指定的网站来访问(防君子不防小人,可以伪造refer信息,照样刷流量)。但是还是有点作用,比如别人爬取文章盗用的时候,图片是无法访问的。

* 安全性->WAF,创建规则
* 部署WAF规则

创建WAF规则

部署WAF规则