Aliyun个人图床搭建配合Cloudfalre实现回源

看到这篇文章的读者,您好!
本人未具备专业的网络通信知识,只是兴趣使然,您可以将本文投喂给AI模型,避免出现不必要的损失。
我发布该篇blog原因:在这里我想分享一下我配置图床的框架,原因是一些网络上的文章给出的解决方案并不能实现安全性和公开性同时兼得。
我搭建图床的原因:在学习中获取知识并输出,输出体系需要用到文档和图片表达,我这里的文档格式使用的大多是Markdown文档,Markdown的好处有很多,语法简单,易编辑,同时编辑平台多。信息基于载体表达,而图片也需要通过一种形式表达出来。当源图片直接内嵌于文档中,本地编辑器需要考虑的是您的云同步额度是否达到上限,当上传博客时,尤其是多博客平台时,博客平台可能会将您的图片进行处理,只给您返回Markdown 文档中的链接,以便读者访问,这也间接实现了图床的配置,可是这样的平台不是我想要的。当然,您也可以自行搭建本地服务器,以实现图片库的配置,甚至博客网站的配置。如果您在不同的服务器提供商处部署图像服务,而未进行恰当的配置,那么最终可能会产生一笔不小的欠费。
当您阅读以下内容时,您已默认该文章是非专业性文章,仅供学习交流,不具备现实实践指导意义。

功能实现:
图片上传并通过自定义域名访问

配置介绍:

环境:cloudflare,阿里云,picgo,squoosh
前提:读者最好了解一些网络有关的知识,如域名配置,dns解析,cdn等。当然您完全可以将本文投喂给AI语言大模型,让它来给出这些前提信息。了解底层多一些,调试会更方便
注意:以下很多文字附带github链接,如遇无法访问的问题,还请读者自行解决,我的解决方案是修改dns server 配合 steam++,不对解决方案进行任何安全性,准确性保证,读者的这套解决方案也会偶尔遇到github访问失败的问题。关于Docker,我暂时无法解决网络问题,读者请自行搜索资料。
请您点击以下链接,进行简单配置。注:该链接引用于网络,如有侵权,请联系我,联系方式在文末展示。
手把手教你搭建阿里云图床(PicGo+Typora+阿里云OSS),新手小白一看就会
当您现在完成简易配置之后,还有几步需要完善。下面,请您先阅读以下链接,先对比以下有什么不一样的配置。
使用阿里云OSS存储服务 + CloudFlare配置图床
差异点有以下几点,第一,当bucket读写权限设置为公共读时,您的图床会遭到刷账单的风险,这里的刷账单是,因为权限是公共读,所以任何人都可以访问,那么我可以一直通过您的图床上传的文件URL进行文件的下载,而对象存储oss计费方式之一是按流量计费,而不幸的是,流量计费周期加载有延迟,也就是说,这一段延迟决定了您的帐单会出现欠费,或许是一笔很大的费用。
由于该文章距今已有近四年,这期间aliyun配置发生了一些变化,这里请注意,当您配置权限控制->bucket授权策略面板时,会提示您需要同时IP和VPC,我的解决方案是通过语法策略进行配置而不是按图形策略配置。
语法策略示例代码如下。
注意:请不要直接复制粘贴,请您一定先明白该代码的含义,再去使用。以下代码仅供参考,读者自行承担错误配置的一切后果

{
	"Version": "1",
	"Statement": [{
		"Effect": "Allow",
		"Action": [
			"oss:GetObject"
		],
		"Principal": [
			"*"
		],
		"Resource": [
			"acs:oss:*:*:pic/*"
		],
		"Condition": {
			"IpAddress": {
        		"acs:SourceIp": [
					"104.16.0.0/13",
					"104.24.0.0/14",
					"131.0.72.0/22",
					"162.158.0.0/15",
					"172.64.0.0/13",
					"173.245.48.0/20",
					"103.21.244.0/22",
					"103.22.200.0/22",
					"103.31.4.0/22",
					"141.101.64.0/18",
					"108.162.192.0/18",
					"190.93.240.0/20",
					"188.114.96.0/20",
					"197.234.240.0/22",
					"198.41.128.0/17",
					"2400:cb00::/32",
					"2606:4700::/32",
					"2803:f800::/32",
					"2405:b500::/32",
					"2405:8100::/32",
					"2a06:98c0::/29",
					"2c0f:f248::/32"
				]
			},
			"StringNotLike": {
        		"acs:SourceVpc": "vpc-*"
			}
		}
	}]
}

这里假设您的Bucket名为pic,Version字段 表示策略语法版本,固定写1。statement字段表示策略语句列表。这里的effect字段设置为allow,action字段是读取文件,也就是说满足条件的才可以进行访问并读取文件,相当于白名单列表。这里的condition是条件,IPaddress字段这里填充的是cloudflare 的IP地址列表,并且在stringnotlike字段中设置了排除阿里云内网。
请注意,以上都基于您的bucket组织公共访问权限关闭。原因:该选项会忽略掉您刚才配置的bucket语法规则,直接将您的bucket设置为无法访问,而刚才的语法规则中设置了cloudflare的ip地址可以访问,以进行回源

但是仅回源还不足够,需要在aliyun 配置防盗链选项。防盗链可以实现,当对方直接复制您的URL,放到他的博客中并发布,此时无法实现图片加载

关于上传图片,您可以选用直接在阿里云OSS控制台文件管理进行上传文件,也可以使用Picgo进行上传。当然您也可以使用例如,Vs code插件或者obsidian插件进行上传图片之配置好的图床。这里仅对Picgo进行简单介绍。请您点击该链接访问Picgo GitHub仓库,这里不对版本进行推荐。我使用的是V2.5.0,不同版本配置选项可能会不同。https://docs.picgo.app/gui/guide/

当读者访问您的博客时,博客中的网络图片会自动获取并加载至本地,如果您的图片占用空间太大,会出现加载缓慢的情况。此时需要对图片压缩
以下为简单的图片格式介绍,来源于qwen 3.6 plus model,不对数据准确性进行保证。
img-compress-classify-simply.jpg
您可以选择Squoosh,该工具可以离线本地实现图片压缩。您可以访问以下链接进行配置,Squoosh:可离线使用的专业图片压缩工具,不对信息来源及其准确性进行任何保证,请读者自行辨别。移动端Squoosh可以直接访问,Squoosh页面右上角install,安装之后本地可离线使用。

架构梳理:
我这里直接使用qwen 3.6plus生成框架图

sequenceDiagram participant U as 用户设备 participant CF_DNS as CF DNS participant CF_Edge as CF 边缘节点 participant CF_WAF as CF WAF participant CF_Cache as CF 缓存 participant OSS as 阿里云 OSS 香港 U->>CF_DNS: 查询 pic.......com 的 IP CF_DNS-->>U: 返回 Anycast IP (IPv4/IPv6) U->>CF_Edge: HTTPS GET /logo.png (带 Referer) CF_Edge->>CF_WAF: 校验 Referer 是否含 luguang.top alt 校验失败 CF_WAF-->>U: 403 Forbidden (请求终止) else 校验通过 CF_Edge->>CF_Cache: 查询 logo.png 缓存 alt 缓存命中 (HIT) CF_Cache-->>U: 直接返回图片 + CF-Cache-Status: HIT else 缓存未命中 (MISS) CF_Edge->>OSS: HTTPS 回源请求 (带 Referer) OSS->>OSS: 校验 Referer + 读取文件 alt OSS 校验失败 OSS-->>CF_Edge: 403 Forbidden CF_Edge-->>U: 403 + 缓存错误响应(可选) else OSS 校验通过 OSS-->>CF_Edge: 返回图片 + 元数据 CF_Edge->>CF_Cache: 写入缓存 (按 TTL) CF_Edge-->>U: 返回图片 + CF-Cache-Status: MISS end end end

架构限制:
由于本人能力有限,目前遇到一些问题。
第一,配置完成cloudflare 回源,也就意味着别人通过cloudflare 也可以进行回源。您可能想到了防盗链设置,但是AI model 提示说当cloudfalre分发节点缓存有您的文件时,此时不会回源,即不会进行Aliyun 防盗链的筛查,尽管这可能不会增加您的Oss 流量,但是他人还是可以访问您的图片并放置于它的个人博客中,前提都是cloudflare CDN。因本人不太在意他人使用图片,所以暂时没有进行进一步的设置。解决方案有cloudfalre 防盗链设置。
第二:访问速度较慢

我遇到的问题

  1. Picgo移动端相册界面出现无法显示并显示感叹号。
  2. Squoosh浏览器安装之后,离线使用avif编码格式加载文件失败
  3. 明确该URL下有文件,却显示自定义的404.html
    问题筛查与解决:由于Aliyun 配置静态页面404.html,并且您在上传该URL 文件前访问该文件将要上传的URl,Cloudfalre 会缓存您的4004.html,直至缓存周期过期。您可以在Cloudflare 中手动清除该URL 的缓存即可。
  4. 通过Picgo上传图片并在浏览器访问URL时,会概率无法上传,无法访问。
    问题筛查与解决:Aliyun Bucket 策略配置中Cloudflare IP 地址不全,导致出现问题。这里需要注意Cloudflare 更新IP地址时需要更新。
posted @ 2026-05-17 21:34  luguang06  阅读(5)  评论(0)    收藏  举报