终于可以把七牛的加速域名给扔了,腾讯EdgeOne使用兼容S3接口配置七牛云存储实践。
问题背景
刚开始搭建博客时,我配置了腾讯EdgeOne的CDN加速+七牛云域名CDN的双层加速方案,起初运行正常。但一段时间后,我发现图片经常出现莫名其妙的403错误,单独访问时又会重新加载,这肯定是哪个配置出了问题。
解决方案探索
为了解决这个问题,我在两家平台上反复尝试了各种配置,包括跨域设置、防盗链、域名绑定、回源站配置等。经过多次折腾,我发现腾讯EdgeOne其实天然支持对象存储加速功能,它不仅支持自家的存储桶,还兼容标准的S3接口。
配置步骤
1. 了解腾讯EdgeOne的对象存储加速功能
腾讯EdgeOne的对象存储加速功能设计得很完善,可以直接对接S3兼容的存储桶:

2. 查找七牛云的S3兼容配置
在七牛云的文档中搜索S3相关内容,发现七牛云确实提供了S3兼容的访问方式,并给出了相应的域名和访问格式:


关键问题
在配置过程中,我发现了两个容易被误解的关键点:
1. 七牛云的S3访问路径格式
一开始我误以为文档中提供的域名就是直接访问存储桶的地址,但实际上正确的访问方式是将空间名包含在域名中。文档中的objectname示例指的是对象名,而非空间名。这样就可以了:http://<空间名>.s3.cn-east-1.qiniucs.com。
2. 关于私有存储授权的配置
腾讯EdgeOne配置中强调:"若您配置回源的存储桶为私有桶,需先授权允许EdgeOne访问,并打开’私有访问授权’开关,否则无法正常回源。"
其实就是,其他S3存储桶通常会生成独立的访问密钥,并需要为该密钥勾选对空间的读授权。而七牛云的配置有所不同,它的一个密钥默认拥有所有权限,不需要单独进行授权操作。
3. 配置EdgeOne的防盗链
腾讯EdgeOne的防盗链配置与区域限制配置如下:

总结
通过这种方式配置后:
- 解决了之前图片403错误的问题
- 将七牛云的存储空间设置为私有,只允许授权访问
- 只需在腾讯EdgeOne上集中管理防盗链、白名单等安全设置
- 整体安全性得到提升
