华为云 OBS 对象存储实战:从零搭建图片托管与 CDN 加速方案
【摘要】 以图片托管场景为例,完整讲解华为云 OBS 的桶创建、权限与防盗链配置、通过 CDN 加速回源、以及前后端直传的签名方案,附关键配置与避坑要点。
一、场景与目标
几乎每个应用都会遇到"用户上传图片/文件"的需求。本文以图片托管 + 访问加速为例,讲清如何在华为云 OBS(对象存储服务)上搭建一套安全、可加速、可防盗链的存储方案,并给出前后端直传的完整思路。
二、创建桶与基础配置
在 OBS 控制台创建桶时,有三个关键选择:
- 区域:尽量贴近主要用户群,降低首字节延迟;
- 存储类别:热数据用标准存储,冷备可选择低频/归档;
- 访问权限:私有桶最安全,对外访问通过签名 URL 或 CDN 回源授权,避免误设公有读。
一个常见误区是直接把桶设为"公共读",短期方便,长期极易导致资源被外链盗刷。正确做法是保持私有,用签名 URL 控制有效期。
三、前端直传:为什么要用签名
如果让所有上传流量都经过自己的服务器中转,会带来带宽与扩展性问题。推荐前端直传 OBS:服务端只负责签发一个短时效的上传凭证(Policy + 签名),前端拿着凭证直接 PUT 到 OBS。核心流程:
1. 前端请求业务服务 => 服务端用 AK/SK 生成 POST Policy 与签名
2. 前端携带 policy、签名、字段直接 POST 到 OBS 桶域名
3. OBS 校验签名通过后落盘,返回对象地址
4. 业务库只存对象的 key,不存完整 URL(便于换域名/CDN)
一个经过实践的建议:把有效期设短(如 5-10 分钟),并在 Policy 中限定 key 前缀与大小上限,防止凭证被滥用。
四、CDN 加速回源
图片是典型的"读多写少",非常适合 CDN。将 CDN 域名绑定到 OBS 桶作为源站,并开启回源鉴权(OBS 私有桶 + CDN 回源签名),既享受边缘缓存加速,又不会被直接盗链。要点:
- 缓存键包含文件 hash 或版本号,实现"内容不变 URL 不变、内容更新 URL 变化";
- 开启防盗链 Referer 白名单,只允许自家域名引用;
- 对图片可开启实时处理(缩放/裁剪/水印),减少源站压力。
五、踩坑与经验
- 不要公有读:私有桶 + 签名/CDN 才是可持续方案;
- 业务只存 key:URL 会随 CDN 域名变化,存 key 更灵活;
- 上传凭证要短时效 + 限前缀:防止被刷;
- 缓存与版本:文件名带内容 hash,避免更新后仍命中旧缓存。
六、小结
OBS + CDN + 签名直传,是一套成熟、低成本、易扩展的静态资源方案。把这套链路跑通后,图片、视频、附件托管都能复用同一套模式。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)