OBS 静态网站托管实操:从建桶到自定义域名访问(含避坑点)
【摘要】 不用 ECS、不装 Nginx:用 OBS 静态网站托管把桶变成 Web 服务器,建桶、上传、开托管、桶策略放行 GetObject 四步上线;再叠加自定义域名 + CDN 实现 HTTPS;文末汇总 5 个实测避坑点。
场景:一个纯静态官网/文档站,又不想为它单独买 ECS、装 Nginx
OBS 的静态网站托管可以把桶直接变成一个 Web 服务器:访问域名就返回 index.html,成本只剩存储和流量。这篇文章把从建桶到自定义域名访问的完整链路走一遍,顺带把我踩过的坑都写出来。
一、准备工作
- 一个已完成实名认证的华为云账号。OBS 按量计费,标准存储是主要成本项,公网流出流量另外计费。
- 准备好静态文件:
index.html、自定义404.html,以及 css、js、图片等资源。文件名大小写敏感,引用时要与实际文件名完全一致。 - 提前想好桶名:桶名全局唯一,且创建后区域不可更改。
二、创建桶
- 控制台进入对象存储服务 OBS → 桶列表 → 创建桶。
- 区域:选离主要访客最近的区域;桶名建议带业务前缀,例如
static-site-20261110。 - 存储类别:选标准存储;是否开启多版本控制,按需即可。
- 注意:默认会勾选“阻止公共访问”。静态站需要匿名读取,但先别急着改,第四步做桶策略时一起处理(见第七节避坑点 1)。
三、上传文件并开启静态网站托管
- 进入桶 → 对象 → 上传
index.html、404.html和全部静态资源;文件多的时候也可以用 obsutil 批量上传,先配好 AK/SK 再执行上传命令。 - 桶 → 基础配置 → 静态网站托管 → 开启。
- 托管模式选“托管静态网站”,索引文档填
index.html,错误文档填404.html。保存后会得到一个“静态网站域名”,格式类似static-site-20261110.obs-website.cn-north-4.myhuaweicloud.com。 - 注意:这个系统域名只支持 HTTP,用 HTTPS 直接访问会失败。需要 HTTPS 的场景看第六节。
四、配置桶策略,开放匿名读取
- 桶 → 权限 → 桶策略 → 新增自定义策略:效果选“允许”(Allow),主体选“所有用户(*)”,操作选 GetObject,资源范围选“桶内所有对象”。
- 只放行 GetObject 就够了。千万别顺手勾上 PutObject、DeleteObject,否则任何人都能往桶里写东西、删东西。
- 如果配置完访问仍提示 403,99% 是“阻止公共访问”开关还在生效:在桶 → 权限里关闭该开关(只影响本桶),再重试。
- 浏览器访问静态网站域名,应直接看到首页。
五、验证与缓存
- 用无痕窗口访问,排除浏览器缓存干扰。
- 验证 404:访问一个不存在的路径,应返回自定义的
404.html,而不是 OBS 默认报错页。 - 验证中文路径和空格:文件名中的空格会被编码为 %20,引用资源时统一用相对路径,不要把域名写死在绝对路径里。
六、绑定自定义域名 + CDN 实现 HTTPS 访问
- 域名需先完成 ICP 备案,未备案域名无法绑定。
- 桶 → 域名管理 → 绑定自定义域名,填已备案的域名。
- CDN 加速域名回源:回源地址填 OBS 的静态网站域名(
obs-website那个),不要填桶域名(bucket.obs.cn-north-4.myhuaweicloud.com)。填错了会走到对象接口而不是网站托管,index.html路由就失效了。 - 在 CDN 控制台为加速域名配置 HTTPS 证书(可申请免费证书),回源协议选“跟随协议”或 HTTP。
- 修改 DNS:把自定义域名 CNAME 到 CDN 分配的加速域名,生效后用
https://自定义域名访问。
七、避坑点汇总
- “阻止公共访问”与桶策略冲突:开关开着的时候匿名读取策略不生效,表现为 403。做法:只在静态站所在的桶上关闭开关,并把桶策略收敛到 GetObject。
- 索引文档必须是桶根目录下的
index.html;子目录也需要放自己的index.html,否则访问子目录路径会 403/404。 - 桶策略资源范围写错:策略只对指定前缀生效,只写
images/*的话根目录首页仍然 403。 - 回源域名写错:CDN 回源填桶域名会丢索引文档路由,必须填
obs-website域名。 - 费用:静态站成本 = 存储 + 请求次数 + 公网流出流量。大流量场景务必开 CDN,否则流出流量单价更高;顺手开 Referer 防盗链白名单,避免资源被别站直链刷流量。
八、小结
静态站上 OBS 的核心就三步:建桶传文件 → 开静态网站托管 → 桶策略放行 GetObject;要自定义域名加 HTTPS,再叠加 CDN。整个链路不买 ECS、不装 Web 服务器,适合官网、文档站、活动落地页。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)