一、准备工作
1. 注册/登录阿里云账号,完成实名认证。
2. 检查备案:如果要用自定义域名(如 `www.example.com`)对外提供网站,域名需已备案(中国大陆节点要求)。用 OSS 默认域名(`bucket.oss-cn-hangzhou.aliyuncs.com`)可先测试,但默认域名仅用于调试,且会返回 XML 格式错误页。
3. 准备一个 Bucket:建议与网站访问者就近选地域(如面向国内用户选华东1杭州、华北2北京)。
二、创建 Bucket
1. 控制台 → 对象存储 OSS→ Bucket 列表 → 创建 Bucket。
2. 填写名称(全局唯一)、选择地域、读写权限选"私有"(后面靠签名URL或CDN回源授权访问,别直接设公共读,除非确认内容可公开)。
3. 关闭"版本控制"(个人网站用不上)、按需关闭"服务端加密"。
4. 勾选/开通 OSS 服务(首次会提示开通按量付费)。
三、上传网站文件
1. 进入 Bucket → 文件管理 → 文件列表 → 上传文件。
2. 上传整站文件,必须保证首页文件在 Bucket 根目录(默认 `index.html`),否则 404。
3. 设置正确的 `Content-Type`(HTML/CSS/JS/图片等),否则浏览器可能下载而非显示。
4. 建议目录结构:
```
/index.html
/404.html
/css/
/js/
/images/
```
四、开通静态网站托管
1. Bucket → 数据管理(旧版称"基础配置")→ 静态页面→ 设置。
2. 开启静态网站托管,填写:
- 默认首页:`index.html`
- 默认错误页:`404.html`
- (可选)**子目录首页**:`index.html`(访问 `/docs/` 自动找 `/docs/index.html`)
3. 保存后得到外网访问端点:
`http://<bucket>.oss-<region>.aliyuncs.com`
此时用这个地址就能预览网站(若 Bucket 是私有读,需先设为"公共读"或通过签名访问)。
五、配置访问权限(二选一)
方案 A:公共读(最简单,适合纯静态公开站点)
- Bucket 权限控制 → 读写权限 → 改为 公共读。
- 注意:公网可直接遍历/读取对象,敏感文件(`.git`、源码、配置)不要上传。
方案 B:保持私有 + CDN 回源(推荐生产环境)
- Bucket 保持私有,在 CDN 控制台添加加速域名,回源方式选OSS 域名,并授权 CDN 读取该 Bucket(Bucket → Bucket 授权管理 → 添加 CDN 授权)。
六、绑定自定义域名 + HTTPS
1. 解析:在域名 DNS 处添加 CNAME,指向 `http://<bucket>.oss-<region>.aliyuncs.com`(或 CDN 域名)。
2. 绑定域名:Bucket → 域名管理(传输管理)→ Bucket 域名 → 绑定已备案的域名。
3. HTTPS 证书:
- 用 OSS 默认域名:域名管理 → HTTPS证书 → 免费证书(阿里云提供3个月免费证书,可一键部署)或上传自己的证书;
- 用 CDN 域名:在 CDN 控制台申请免费证书并开启"强制 HTTPS"。
4. 开启后访问 `https://www.example.com` 即为加密站点。
七、(可选但推荐)挂 CDN 加速
1. 开通 CDN → 添加域名 → 源站选该 OSS Bucket。
2. 配置缓存规则(HTML 设短缓存如 10 分钟,`/css/`、`/images/` 设长缓存 1 个月)。
3. 开启 Gzip/Brotli 压缩、HTTP/2。
4. 效果:国内访问速度显著提升,且能隐藏 OSS 源站地址。
八、常见问题排查
| 现象 | 原因与解决 |
|---|---|
| 403 AccessDenied | Bucket 私有且未授权读;改公共读或配签名/CDN授权 |
| 404 NoSuchKey | 首页不在根目录,或"默认首页"没填对 |
| 页面显示成 XML 报错 | 走了 OSS 默认域名的错误返回;绑定自定义域名 |
| 图片/字体加载失败 | CORS 未配置 → Bucket → **跨域设置**,来源填 `*` 或你的域名 |
| 域名无法访问 | 未备案、CNAME 未生效(等 DNS 生效,通常几分钟到几小时) |
| 证书报错 | 证书未部署到该域名,或证书与域名不匹配 |
九、更新网站
重新上传同名文件覆盖即可(注意浏览器缓存,建议文件名加 hash 或设置短缓存的 HTML);CDN 环境需在 CDN 控制台对变更文件执行 URL刷新。
---
最小可用路径(先跑通再优化):创建 Bucket → 上传 `index.html` → 开静态网站托管 → Bucket 设公共读 → 用 OSS 端点访问 → 再补自定义域名 + HTTPS + CDN。