Post

CLOUDFLARE图床

图床的需求

由于在写blog以及web开发的时候,会有大量的图片展示的需求。而图片的存储就是一大难题,要不直接放在自己的服务器里,要不就托管在第三方图床。而由于环境的问题,第三方最大的坏处就是及其不稳定以及涉及内容审查导致的资料丢失问题。所以一个稳定的图床就显得及其重要了。放在自己服务器里这条路想想还是算了,毕竟速度又慢,存储又贵。

CLOUDFLARE

查阅了很多方案,有gitee的,有github的,有微博图床的,有OSS为代表的对象存储的,有OneDrive的,有Imgur的,有SM.MS的,有jsDelivr的等等等等,虽然基本上都没尝试过,但是有些方案一看就过时了,甚至已经DEAD了。有些方案一看就知道由于某些原因可能存在速度问题。最后这里选了CLOUDFLARE做域名DNS方案来进行尝试(最后还是很成功的)。

CLOUDFLARE方案逻辑

CLOUDFLARE(以下简称CF)方案大概逻辑就是注册一个CF的S3类型的对象存储bucket,然后在CF里做域名解析的转移,转移到CFDNS,这样就可以通过url访问对象存储的图片。所以,我这里的一个前置条件就是需要有自己的域名,而我是有域名的,所以没问题,但是如果没有自己的域名的话应该也可以,可以结合github等第三方托管做转发应该也是可以达到一样的效果的,不过这个我就没试了。

注册

第一步就是注册CF,新用户需要填写信用卡信息,官网显示是VISA,MASTER等组织的,没有银联,但亲测银联也可以,填写完后会预授权1美元的消费,然后会马上撤销,实际上相当于验证功能,并没有实际消费,大厂果然是大厂,值得信赖!点个攒!

Add website

注册完后,就是添加一个自己的主域名,添加完后,系统会给出相关信息,其中就有给你的两条DNS服务器地址,这个地址后面需要把现有域名的DNS更换。我原来的域名是阿里云注册的,所以登录阿里云的域名控制台,把域名的DNS修改,修改的值就是上面CF添加域名后给出的两条DNS地址。修改完后提示12h-24h生效,实际上2分钟CF就显示ACTIVE了。这时候ping 域名IP就能发现已经不是原来的ip了,会随机成CFDNS服务器地址,这说明CFDNS已经生效了。

生成bucket

解析域名后,这时候点R2项目,生成一个S3的对象存储bucket,名字随便取个有意义的就行,我这里取的是flyingbear

添加二级域名

bucket生成完后,在bucket页面里的Setting界面里的Custom Domains小栏里点击Connect Domain,这时候把一个新的二级域名添加进去,作为bucket的访问域名。这里我填的cdn.gaoyuhui.com,这个二级域名不需要在购买商那里解析,直接在这里添加完后CF可以直接解析。只要添加完后,没问题的话页面会提成二级域名的Status变成了Active。这时候你在浏览器里直接访问这个二级域名也是可以访问的,只不过提示你没权限访问内容。

Public Access

仍然是在bucket界面,把R2.dev subdomainPublic Access按钮打开,更改了公开权限,这样图片才能公开访问。

另外提下的是,在CF里进行解析的域名貌似是可以自带https服务的,不要自己额外进行https证书申请,而且也貌似没有时间限制,真实福利到底!

Manage R2 API Tokens

实际上,这时候就已经设置完成了,可以通过网页UI界面上传图片了,然后可以在bucket里面给出的连接公开访问了。但是这里按照其他的建议,是通过工具(比如PicGo)来进行上传,再复制连接到Markdown文件里,所以这里还需要对bucket进行Token之类的生成,会有key ID,key等,把这些key设置在第三方上传软件里就可以直接把本地图片上传到CFbucket里了。

CLI API

不过对于我来说,在使用PicGo上传的时候,它会生成一个跟原始文件名字不同的文件名,因为在软件里面是对上传过程进行定义了的。对于这种情况,虽然可以通过软件的设置参数去达到自己想要的文件名,但是这不是脱裤子放屁吗?我需要的就是原始的文件名,直接上传,这样我可以在文章里,结合已经设置好的解析域名直接把文件名写在markdown文件里,哪怕以后cfDEAD了,我只要把备份的图片直接换一个图床,换一个域名换一个bucket就直接整体迁移了。所以,我只需要一个CLI API的形式,直接一条命令把文件传到bucket里就行了。 当然,本文的重点是图床的搭建,到这里已经就成功了。 最终的效果就是,一个你自己的二级域名的图片地址,可以直接以url连接的形式直接公开访问,比如https://cdn.gaoyuhui.com/flyingbear%2F2024%2F05%2F27280a963be030d47bc17708f3f76e5a.jpg这个图片地址。

实际效果

现在本blog主域名的解析已经换到CF,理论上由CF进行了加速,图片我也换到了搭建好的图床上,实际上我在打开本网站的时候,确实明显感觉到速度是非常快的,比以前的效果有明显不同,即使现在的网页资源还很少。如果随着以后内容增多,我想这种加速会带来很大的改观。

CF R2费用问题

注意,在使用R2的时候可以看见费用选项,CF不是完全免费的,10G以下是免费的,这个容量对于个人用处来说已经足够了。现在还能免费白嫖的服务真的是越来越少了,请大家珍惜!

小结

CF搭载域名转发实现图床加速是非常可行的,而且还是大厂服务,最重要的还是免费的。亲测有效,不过由于是文字描述,没有图片指引,可能没那么直观,亲手上手的话其实也是能按照指引执行下去的。

This post is licensed under CC BY 4.0 by the author.