设置静态网站托管
概述
BOS 支持用户将静态网站托管在 Bucket 上,实现网站轻量化运维。设置生效后,用户可通过直接访问该Bucket的域名访问该托管网站。
静态网站是指网站内容全部为 HTML、JPG 等静态化资源,不包含诸如 PHP、JSP 或 ASP.NET 等服务器端脚本。同时,静态托管的网站也不支持在服务器端进行脚本编写。
如需部署及管理动态网站,请使用百度智能云服务器BCC或容器服务CCE。
说明:
出于安全考虑,对象存储(BOS)所有地域自2022年9月15日起,通过浏览器访问 BOS 官方域名与 CDN 官方加速域名中的网页类型文件(mimetype为text/html,扩展名包括HTM、HTML)将变更为以附件的形式进行下载。具体变更如下:
- 使用 BOS 官方域名访问时,Response Header中会自动加上
Content-Disposition:'attachment=filename;'
。即从浏览器访问网页类型文件时,不会显示文件内容,而是以附件形式进行下载。查看官方域名信息请见查看Bucket官方域名。- 使用 CDN 官方加速域名访问BOS时,Response Header中会自动加上
Content-Disposition:'attachment=filename;'
。即从浏览器访问网页类型文件时,不会显示文件内容,而是以附件形式进行下载。- 使用自定义域名访问 BOS 时,Response Header中不会加上
Content-Disposition:'attachment=filename;'
,您可以直接通过浏览器预览网页类型的文件,添加自定义域名的方法详见创建Bucket自定义域名。
业务使用方式
对于待托管的静态网站,您需要先在 Bucket 中上传关键文件资源:“索引页面”对应的文件和“404页面”对应的文件。
索引页面
一个标准的网站通常会具备若干索引页面,对应网站的首页及子模块的首页。当用户在浏览器地址栏访问根目录如 www.example.com
,或以 / 为结尾的目录如www.example.com/folderA/
时,未请求到特定的页面,BOS则会返回索引页面。
网站管理员可在 Bucket 的根目录及子目录上传静态资源,用于访问索引页面时的效果展现。BOS 当前支持以 html 格式的文件作为索引页面。
404 页面
当静态网站在访问遇到常见的 404 错误时,一般网站都会提供一个经过设计的报错页面,以此给予网站访问者较好的体验。对于在 BOS 托管的静态网站,网站管理员可在 Bucket 根目录下上传 html、jpg、png、bmp、webp 格式的文件作为 404 页面,当网站访问者预期查看的数据找不到时,BOS 将默认展示此 404 页面。
注意:
- 索引页和 404 页配置的文件需为公共读,允许被匿名访问。
- 如果您对预期做静态网站托管的 Bucket 需设置为公共读权限(不推荐),用于匿名用户的访问。建议不要将机密数据上传至此 Bucket。
- 请不要为 404 页面设置 meta "Content-Disposition:attachment"。
当管理员在 Bucket 内上传索引页面及 404 页面对应的资源后,可通过 BOS 管理控制台进行索引页面及 404 页面的配置。
设置静态网站托管
- 登录 对象存储 BOS 管理控制台。
- 在左侧 Bucket 列表中,选择需要设置权限的 Bucket,点击 Bucket 名称进入 Bucket 管理目录。
- 在上方导航栏选择 配置管理 页签。
- 在 配置管理 页面中选择 高级配置,在 静态网站托管 区域点击 修改配置。
- 在 静态网站托管配置 操作栏中,将 托管状态 变更为 开启,可对 索引页面 和 404页面 进行配置。
- 索引页配置用于配置访问根目录或者任何一级目录时,默认返回的索引文件
- 404页面配置。访问Bucket内文件出现404时,BOS返回的错误页面,文件需放置在存储桶的根目录下, 响应码用于配置返回错误文档时的HTTP响应码为404或200,默认为 404。
注意:
- 索引页面的名称可根据网站管理习惯任意指定,如“index.html”或“admin.html”等,但各级索引页面对应的资源名称需统一为一个相同的名字;
- 索引页面和404页面至少需填写一个否则配置无法生效;
- 如果设置的托管页面为归档类型,配置将不会生效;
- 当管理员填写的与页面匹配的资源在 Bucket 中不存在时,按 404 处理;如 404 页面对应的资源也不存在时,则返回原始的 404 报错页面;
- 当用户为此 Bucket 同时打开静态网站托管及镜像回源后,当用户预期访问的资源不存在时,BOS 将先尝试进行镜像回源,如仍然无对应资源,则会遵循静态托管的逻辑返回 404 页面。
配置举例
用户在 bj 区域创建了名为 website 的 Bucket,并在其中放置如下文件:
- 在 Bucket 根目录放置 index.html,并设置为公共读
- 在 Bucket 根目录放置 404.html,并设置为公共读
- 在 Bucket 二级目录 website/car 放置 index.html,并设置为公共读
- 在 Bucket 二级目录 website/car 放置 apollo.jpg,并设置为公共读
当用户将该 Bucket 开启静态网站托管功能后,该网站访问者的访问行为定位如下:
- 访问 www.website.bj.bcebos.com 时,页面呈现 index.html
- 访问 www.website.bj.bcebos.com/car/ 时,页面呈现 index.html
- 访问 www.website.bj.bcebos.com/car/apollo.jpg 时,页面呈现 apollo.jpg
- 访问 www.website.bj.bcebos.com/car/dazhong.jpg 时,因不存在此资源,页面呈现 404.html
相关API
静态网站托管功能也支持通过 API 方式设置,具体可参见如下接口说明:
- PutBucketStaticWebsite 接口:使用 PutBucketStaticWebsite API 接口设置静态网站托管。
- GetBucketStaticWebsite 接口:使用 GetBucketStaticWebsite API 接口获取 Bucket 的静态网站托管信息。
- DeleteBucketStaticWebsite 接口:使用 DeleteBucketStaticWebsite API 接口删除 Bucket 设置的静态网站托管信息,并关闭此 Bucket 的静态网站托管。