华为云 OBS 静态网站托管 + CDN 加速实战:低成本上线一个静态站点

举报
yd_225054385 发表于 2026/10/24 15:13:59 2026/10/24
【摘要】 华为云 OBS 静态网站托管 + CDN 加速实战:低成本上线一个静态站点 引言很多个人开发者和小团队都有这样的需求:上线一个文档站、博客、产品落地页或者活动页——页面全是静态资源,没有后端逻辑。如果为此专门买一台云服务器装 Nginx,不仅浪费,长期下来也是一笔固定开销。更轻的方案是:对象存储 OBS 做源站 + CDN 做加速。OBS 原生支持静态网站托管,CDN 回源到 OBS,就能...

华为云 OBS 静态网站托管 + CDN 加速实战:低成本上线一个静态站点

引言

很多个人开发者和小团队都有这样的需求:上线一个文档站、博客、产品落地页或者活动页——页面全是静态资源,没有后端逻辑。如果为此专门买一台云服务器装 Nginx,不仅浪费,长期下来也是一笔固定开销。

更轻的方案是:对象存储 OBS 做源站 + CDN 做加速。OBS 原生支持静态网站托管,CDN 回源到 OBS,就能得到一个全球访问都很快、按量计费的静态站点。本文记录一次完整实战流程和踩过的坑。

一、方案选型与成本

整体架构很简单:用户 → 华为云 CDN(边缘节点) → 回源 → OBS 桶(静态网站托管)

成本构成只有三块,全部按量计费:1. OBS 存储费用:标准存储按实际用量计费,几个 MB 的静态页面几乎可以忽略;2. OBS 请求费用:CDN 回源时会产生 GET 请求,正常访问下量级很小;3. CDN 流量费用:按实际下行流量计费,小站点一个月通常就几块钱。

对比包月云服务器,这个方案在访问量不大时便宜一个数量级,而且天然高可用,不用操心服务器宕机、打补丁。

二、创建 OBS 桶并开启静态网站托管

1. 创建桶

登录华为云控制台,进入「对象存储服务 OBS」,点击创建桶。几个关键选项:区域选择离你目标用户最近的区域;存储类别标准存储,访问频繁的静态资源用标准存储最划算;桶策略先保持私有,后面单独给网站目录配置公共读,避免整个桶被意外公开。

2. 开启静态网站托管

在桶的「概览」或设置页找到「静态网站托管」,启用它,并配置:索引文档 index.html(访问目录时默认返回的文件);错误文档 404.html(可选,建议配一个,体验好很多)。

开启后,OBS 会给桶分配一个静态网站访问域名,形如 bucketname.obs-website.xx-region.myhuaweicloud.com。记住这个域名,后面配 CDN 回源要用它——不要用普通的 OBS endpoint 做源站,否则会出现 403 或重定向问题,这是最常见的坑。

3. 配置桶策略允许公共读

静态网站要能被公网访问,需要给桶配置允许匿名读取的策略。建议只对网站文件所在前缀授权,而不是整个桶。例如只允许 /* 下的 GetObject 给匿名用户。控制台的桶策略编辑器支持可视化配置,选"公共读"模板即可。

4. 上传网站文件

把 index.html、404.html 以及 css/js/图片上传到桶根目录。可以用控制台直接上传,文件多的话建议用 obsutil 命令行工具批量同步,速度更快。

上传完成后,直接用浏览器访问那个静态网站访问域名,能正常打开页面,说明源站 OK。

三、绑定 CDN 加速

源站调通后,接下来套一层 CDN,让全国乃至全球用户访问都快。

1. 添加加速域名

进入「内容分发网络 CDN」控制台,「域名管理」→「添加域名」:加速域名填你自己的域名,比如 www.example.com;业务类型选择"网站加速";源站类型选择"源站域名",填入上一步的 OBS 静态网站访问域名;回源 HOST 保持与源站域名一致(默认即可)。

再次强调:源站一定要填静态网站托管域名,而不是桶的 REST endpoint。用错域名是 403 报错的头号原因。

2. 配置 HTTPS

现在基本都是全站 HTTPS。在 CDN 域名配置里上传你自己的证书,或者直接申请 CDN 提供的免费证书,一键部署。建议同时开启"强制跳转 HTTPS",把 HTTP 请求 301 到 HTTPS。

3. 配置缓存规则

缓存配得好不好,直接决定回源率和账单。推荐策略:*.html 不缓存或只缓存几分钟,保证内容更新及时生效;*.js、*.css 缓存 7 天以上,配合文件名带 hash 做版本管理;*.png、*.jpg、*.webp、*.woff2 缓存 30 天,图片字体极少变化。

CDN 控制台的「缓存配置」里按文件后缀分别建规则即可。

4. 域名解析切换

最后一步:去你的 DNS 服务商处,把加速域名的 CNAME 解析到 CDN 分配的 CNAME 域名。解析生效后(一般几分钟),访问自己的域名,走的就是 CDN 了。

四、验证与排错

验证缓存是否命中

curl -I https://www.example.com/index.html,看响应头:如果带 HIT 字样说明命中边缘节点缓存,MISS 则是回源了。刚发布完第一次访问基本都是 MISS,多刷两次变成 HIT 就正常了。

更新内容后刷新

改了页面想立刻生效,别干等缓存过期,用 CDN 控制台的「刷新预热」功能,按 URL 刷新那几个改了的文件,一般 5 分钟内全网生效。

常见坑清单

  1. 403 Forbidden:先查桶策略是否允许公共读,再查 CDN 源站填的是否是静态网站托管域名;2. 访问显示 XML 错误页:说明请求走到了 OBS REST 接口而不是网站托管,大概率源站域名填错;3. index.html 大小写:Linux 风格的精确匹配,Index.html 和 index.html 是两个文件;4. HTTPS 证书不匹配:加速域名和证书里的域名要一致,泛域名证书注意覆盖子域名。

五、成本优化小技巧

图片先压缩再上传,优先用 WebP 格式,一张头图从 2MB 压到 200KB 很常见,CDN 流量费直接打一折;给长期不变的资源设置更长的缓存时间,提高边缘命中率,减少回源请求;定期清理桶里不再用的旧文件,或者配一条生命周期规则,把 90 天没人访问的对象自动转成低频访问存储。

总结

OBS 静态网站托管 + CDN 这套组合,配置下来也就半小时:建桶、开托管、配策略、传文件、CDN 加域名、配缓存、CNAME 切换。对文档站、博客、落地页这类纯静态场景,它比云服务器更便宜、更省心,还自带高可用。

如果你正好有一个静态页面要上线,不妨按上面的步骤走一遍;遇到 403 先查源站域名,八成问题都出在那。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。