在之前本博客一直使用 api.maho.cc
的随机图片 API 作为主页 PC 背景图来源。但是用久了自然就产生自己整一个的想法,于是便有了这篇文章。
本文将利用 Backblaze 加入了 Cloudflare 带宽联盟的特性,搭建一个简单的随机图片 API.
感谢 Luminous 大佬「【对象存储】搭配CF带宽联盟实现流量免费」提供的灵感。
什么是 Cloudflare 带宽联盟?
在 Cloudflare 官网,带宽联盟在介绍时被称为 Bandwidth Alliance. 带宽联盟中的企业都与 Cloudflare 建立了合作,并且为这些企业用户降低或免除带宽费用。
在带宽联盟中有很多企业,包括阿里云、Azure、Oracle Cloud、腾讯云、Vultr 等,也包括我们今天要使用的 Backblaze。
但是值得注意的是,尽管阿里云加入了 Cloudflare 带宽联盟,但似乎只将优惠提供给了阿里云国际站的用户,国内站并不能享受带宽联盟带来的优惠。
详情可以查看 Cloudflare 关于 Bandwidth Alliance 的介绍页面。
创建 Backblaze B2
注册链接:https://www.backblaze.com/b2/sign-up.html
在注册时我们就可以看到「First 10 GB are free」的字样。也就是说,只要我们存储的内容不超过 10 GB,再配合使用 Cloudflare,就不会产生任何费用。
注册后完成邮箱验证,便可以开始创建 Bucket 了。
在创建时,需要注意将默认的 Private 改成 Public。
将 B2 连接至 Cloudflare
由于 B2 的服务器允许所有域名接入,因此我们可以直接将域名以 CNAME + CDN 的形式解析至 Backblaze.
首先我们在 Bucket 中随便上传一个文件,然后点击文件旁边的「信息」icon,获得「Friendly URL」中的域名。例如我的是「f004.backblazeb2.com」。
然后直接在 Cloudflare 添加 CNAME + CDN 解析即可。
之后我们还需要添加一个转换规则。
点击侧边栏中的规则——转换规则,然后新建一个 URL 重写规则。
When:
(http.host eq "[Your Domain]")
Then:
concat("/file/[Bucket Name]", http.request.uri.path)
这样我们就将 Friendly URL 中的 /file/[bucket_name]
隐藏掉了。
搭建随机图片 API
这里我使用了 GitHub 上的一个基于 PHP 的随机图片项目:YieldRay/Random-Picture
这个程序其实只包含了两部分:api/
中的 PHP 和根目录下的 url.csv。
只需要简单部署在服务器或者使用 README.md 中提到的 Vercel 进行部署即可。
将图片源上传至 B2,整理出每张图片的 URL,然后存储在 url.csv 即可。
当然,如果你不希望所有图片链接被暴露,也可以通过修改api/index.php
的方法来「隐藏」你的 url.csv 文件。
效果
本博客的 PC 端主页随机图就是啦~
可以通过 api.sakurark.com/random-img 进行测试(虽然只有 10 张图
Comments NOTHING