You need to enable JavaScript to run this app.
内容分发网络

内容分发网络

复制全文
使用 CDN 加速 TOS 资源分发
CDN + TOS 为静态网站配置首页
复制全文
CDN + TOS 为静态网站配置首页

您是否在使用火山引擎对象存储(TOS)和内容分发网络(CDN)托管静态网站时遇到了以下问题:当访问加速域名根目录(例如 https://www.example.com/)时,看到的不是预期的 index.html 首页,而是一个 XML 格式的文件列表?

本文将为您介绍解决此问题的最佳实践。

问题根源与不同场景

当 CDN 收到访问根目录(/)的请求时,它会向源站 TOS 请求根目录。TOS 默认会返回一个包含所有文件列表的 XML 文件,而不是您期望的首页文件(如 index.html)。

要解决这个问题,需要根据您 TOS 存储桶的访问权限,采取不同的配置思路。主要分为以下两种场景。

场景一:存储桶为“公开”

如果您的存储桶访问权限是公开的,您有两种方式来配置首页访问:

  • 方法一:TOS 静态网站特性。此方法需要在 TOS 和 CDN 两侧进行配置,步骤相对分散。详细操作请参见文末的 附录:其他配置方式
  • 方法二:CDN 回源 URL 改写。此方法是推荐的方式,所有配置都在 CDN 侧完成,更加集中和便捷。

场景二:存储桶为“私有”

如果您的存储桶是私有的,情况会更复杂一些。根据 TOS 关于 设置静态网站 的前提条件,首页文件必须是公开的。私有桶的文件默认私有,因此直接使用 TOS 的静态网站特性是行不通的。

针对私有桶,您同样有两种方法:

  • 方法一:将首页文件设为公开。此方法需要在保持存储桶私有的同时,单独将首页文件(如 index.html)的权限设为“公共读”。这种方式虽然可行,但可能与您期望的严格安全策略相悖。详细操作请参见文末的 附录:其他配置方式
  • 方法二:CDN 回源 URL 改写。此方法是推荐的方式,它可以在不更改 TOS 存储桶或其中任何文件权限的前提下解决问题,完美兼顾了功能与安全。

统一的推荐方案:回源 URL 改写

综合以上两种场景,我们不难发现,使用 CDN 的“回源 URL 改写” 特性是解决首页访问问题的最佳实践。

  • 对于公开桶:它将配置收敛在 CDN 一侧,更易于管理。
  • 对于私有桶:它无需对外暴露任何文件,安全性更高。

因此,本文将重点介绍如何使用“回源 URL 改写”特性来配置您的静态网站首页。

配置方法:使用回源 URL 改写

“回源 URL 改写”特性的核心原理是:在 CDN 的边缘节点上拦截用户访问根目录的请求,并在请求回源到 TOS 之前,将请求的 URL 路径修改为您的首页文件路径(例如 /index.html)。

配置步骤

您只需在火山引擎内容分发网络控制台,按照以下步骤完成配置即可。

  1. 登录 火山引擎内容分发网络控制台
  2. 在左侧导航栏,点击 域名管理
  3. 在域名列表中,找到需要配置的域名,点击其操作列下的 管理
  4. 导航到“回源 URL 改写”配置区
    • 如果您使用的是旧版控制台:请点击 回源配置 标签页,找到 回源 URL 改写 模块。
    • 如果您使用的是新版控制台:请在左侧的配置项列表中,导航到 功能配置 > 回源配置 > 回源 URL 改写。如果该模块未启用,请点击模块右侧的 + 将其开启。
      关于新旧版域名管理页面的区别,参见 新版域名配置
  5. 回源 URL 改写 模块中,设置 状态 为启用。
  6. 点击 新增规则
  7. 完成以下配置:
    • 改写类型路径改写
    • 用户请求路径^/$
    • 回源路径:设置为首页文件的路径。例如 /index.html

Image

附录:其他配置方式

公开桶配置方式一

TOS 设置

  1. 设置静态网站:在 静态网站 页面,设置默认页面。
    Image
  2. 绑定加速域名为自定义域名:进入 域名与传输加速 > 域名管理 页面,找到加速域名,点击 一键绑定
    Image

CDN 设置

  1. 设置源站为 TOS 桶。
  2. 设置源站的回源 Host 为 TOS 桶的自定义域名,也就是您的加速域名。

Image

私有桶配置方式一

TOS 设置

  1. 设置静态网站:在 静态网站 页面,设置默认页面。
  2. 绑定加速域名为自定义域名:进入 域名与传输加速 > 域名管理 页面,找到加速域名,点击 一键绑定
  3. 设置首页文件为公开:在 文件列表 页面,找到首页文件,在 操作 列点击 修改访问权限,然后设置 访问权限公共读
    Image

CDN 设置

  1. 设置源站为 TOS 桶。
  2. 启用私有桶访问。
  3. 设置源站的回源 Host 为您的加速域名。

Image

进阶:配置安全兜底策略

本文介绍的“回源 URL 改写”是解决首页访问问题的最佳实践。在正确配置后,您的网站已经可以正常运行。

本章节介绍的是一个可选的、用于安全加固的“兜底”策略。其目标是:在 CDN 配置因某些原因(例如被误删除)失效时,防止 TOS 存储桶的文件列表被直接暴露。它通过在 TOS 侧禁用 ListBucket 权限来实现。

注意

  • 此操作直接作用于您的 TOS 存储桶权限,请务必在完全理解其原理后再进行配置。
  • 请勿在 CDN 侧配置任何“禁止访问根目录”的规则,这会导致您的网站首页无法访问。

原理说明

当一个请求试图列出存储桶中的文件时(例如,直接访问 TOS 桶的根目录),TOS 会检查该请求是否拥有 ListBucket 权限。

  • 如果有权限:TOS 返回一个包含文件列表的 XML 文件。
  • 如果无权限:TOS 返回 403 Forbidden 错误。

我们的“回源 URL 改写”规则,巧妙地将访问根目录的请求改写为了访问 /index.html,因此它不会触发 ListBucket 检查,网站得以正常访问。

而本章节介绍的“兜底”策略,就是主动将 ListBucket 权限关闭。这样,即使 CDN 规则失效,当有请求直接访问到 TOS 桶的根目录时,也只会收到一个 403 错误,而不是文件列表,从而保证了安全性。

配置方法

根据您的存储桶访问权限,执行对应的检查和配置。

场景一:存储桶为“私有”

对于私有桶,默认情况下,匿名用户没有任何权限,包括 ListBucket 权限。因此,您通常无需进行任何额外配置,安全兜底策略天然生效。

场景二:存储桶为“公开”

对于公开桶,您需要检查并确保 ListBucket 权限没有被错误地开放给匿名用户。您可以通过以下两种方式进行配置(任选其一即可):

  • 方式一:调整桶的公共读权限(推荐)

在 TOS 控制台,导航到 桶配置 > 访问控制 > 公共访问权限,在 读取权限 中,确保“包含对象列举/多段列举”选项没有被勾选
Image

  • 方式二:使用授权策略(Bucket Policy)

如果您正在使用授权策略来管理权限,请确保策略中没有授予匿名用户 ListBucket 的权限。例如,在可视化配置中,确保 ListBucket 未被勾选。
Image

最近更新时间:2025.12.22 13:35:55
这个页面对您有帮助吗?
有用
有用
无用
无用