跳到主要内容

用阿里云 OSS 托管静态网站

如果你的网站本质上只是 HTML + CSS + JS + 图片,那么 OSS 往往比继续维护一台云服务器更省事。这篇笔记只回答几个最常见的问题:OSS 能托管什么什么时候要备案主域名怎么绑定原来的服务器能不能停

先说结论

  • 纯静态网站可以直接托管在 OSS 上,常见场景包括文档站、博客静态导出、作品集和落地页。
  • 如果只是托管图片、JS、CSS、字体和下载文件,OSS 也很合适;但数据库、后台管理、服务端渲染和定时任务仍然需要别的计算服务。
  • Bucket 位于中国内地时,正式通过自定义域名对外提供网站访问,域名需要满足 ICP 备案要求。
  • Bucket 位于中国香港或其他海外地域时,通常不需要走中国内地 ICP 备案,但大陆访问体验一般会弱于中国内地地域。
  • 直接用 OSS 默认 Bucket 域名访问 HTML,浏览器可能会触发下载而不是正常打开页面;正式上线建议绑定自定义域名。
  • 能不能停掉原来的服务器,关键不在于页面能否打开,而在于你的站点是否真的不依赖后端。

OSS 适合托管什么

场景是否适合放到 OSS说明
文档站、博客静态导出、作品集适合构建产物直接上传即可
图片、JS、CSS、字体、附件下载适合典型的静态资源托管场景
前后端分离项目的前端适合前端可放 OSS,API 仍需其他服务
WordPress、PHP、Java、Node 后端应用不适合全站放 OSS仍然需要服务器或 Serverless 计算
只做图床或文件分发适合配合自定义域名和 CDN 更顺手

如果你的项目是单页应用(SPA),也能放到 OSS,只是静态网站托管时要按单页应用的方式去配置首页与路由回退。

备案和地域怎么选

阿里云官方关于 OSS 绑定自定义域名的规则,核心可以压缩成两点:

  • 中国内地 Bucket + 自定义域名用于网站访问或静态资源访问,域名需要满足备案要求。
  • 如果主域名已经完成备案,那么同一主域名下的子域名绑定到 OSS,通常不需要再单独做一次备案。

可以先按下面这张表做选择:

Bucket 地域是否需要中国内地 ICP 备案适合什么场景取舍
中国内地需要面向国内访问的正式站点访问体验更好,但要处理备案流程
中国香港 / 海外通常不需要想先快速上线,或暂时不做备案部分地区访问延迟更高

这里还有一个容易混淆的点:如果你准备在阿里云办理备案,不要默认认为“开了 OSS 就一定能直接备案”。是否具备备案资格、是否有可用备案服务码,要以备案控制台里的可备案实例和账号状态为准。

主域名能不能直接绑定 OSS

可以绑定,但要分成两层理解:

  1. 从 OSS 侧看,自定义域名是可以绑定的。
  2. 从 DNS 侧看,根域名(例如 example.com)能不能直接生效,还取决于你的 DNS 服务商是否支持 ALIAS 或类似的 CNAME 展平能力。

实际操作里更稳妥的做法通常是:

  • www.example.comstatic.example.com 这类子域名,直接按官方文档做 CNAME。
  • 根域名 example.com,先确认 DNS 服务商是否支持 ALIAS 或同类能力。
  • 如果不支持,就让 www 作为正式访问地址,根域名做跳转,或者在 OSS 前面再加一层 CDN / 网关。

换句话说,主域名能不能用 不是 OSS 一家的问题,而是 OSS 绑定能力 + DNS 解析能力 共同决定的。

一套更稳妥的上线流程

如果你要把现有静态站迁到 OSS,建议按这个顺序走:

  1. 先确认网站是否真的是纯静态输出,或者至少前端部分可以独立静态部署。
  2. 在本地或 CI 中生成构建产物,例如 distbuild 或静态导出的 out 目录。
  3. 创建 OSS Bucket,并先决定地域是选中国内地还是中国香港 / 海外。
  4. 上传静态文件。
  5. 在 Bucket 的静态网站托管配置里设置默认首页 index.html 和错误页;如果是 SPA,按单页应用方式配置。
  6. 绑定自定义域名,并完成域名所有权验证。
  7. 到 DNS 服务商处添加解析记录,常见是 CNAME,根域名则看是否支持 ALIAS 或等价能力。
  8. 按需补上 HTTPS 和 CDN。
  9. 测试首页、静态资源、深链路由、404 页面和刷新行为是否正常。

如果你发现“直接访问 Bucket 域名会下载 HTML”,不要怀疑文件坏了,这通常是 OSS 默认访问方式的表现。正式访问路径还是应该落在自定义域名上。

什么时候可以停掉原来的服务器

可以先用一句话判断:只要页面展示不依赖服务端实时参与,你就有机会把服务器停掉。

下面这些情况,通常可以考虑不再续费原来的 ECS:

  • Docusaurus、VitePress、Hugo、Jekyll 这类纯静态站点
  • React / Vue 前端构建后直接产出静态文件的项目
  • 前端页面放 OSS,后端 API 改由其他独立服务提供

下面这些情况,则不能因为“首页能打开”就贸然停服务器:

  • WordPress、Typecho 这类依赖数据库和后台管理的站点
  • Next.js、Nuxt 等仍在使用 SSR / API Route 的项目
  • 需要登录态、文件上传处理、定时任务、搜索索引生成等服务端能力的系统

所以更准确的说法不是“绑了 OSS 就能停服务器”,而是“站点已经完成静态化之后,服务器才可能退出主链路”。

备案不会自动过期,但要避开这些问题

阿里云官方说明里提到,备案号本身没有固定有效期;只要信息真实、变更及时、接入关系正常、内容合规,备案可以长期有效。

真正更需要注意的是这些风险:

  • 你主动提交了注销申请。
  • 域名过期后被删除或转给他人,新持有者又发起了相关操作。
  • 备案信息不真实、不准确,或联系方式失效,导致被取消接入。
  • 从一个服务商迁到另一个服务商后,长期没有完成新的接入备案。
  • 网站内容涉及违法违规信息。

如果你的主体信息、联系方式或站点接入关系发生变化,正确做法是及时变更或接入备案,而不是放着不管。

适合新手的决策方式

如果你只是想尽快选一条不容易出错的路,可以直接这样判断:

  • 想要国内访问更稳,且愿意走备案流程:选中国内地 Bucket。
  • 只是临时上线、测试或个人展示,不想先折腾备案:选中国香港或海外 Bucket。
  • 网站已经是纯静态产物:优先考虑 OSS。
  • 网站还离不开数据库、后台或服务端逻辑:OSS 先托管静态资源,不要急着砍服务器。

参考