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 静态网站特性。此方法要求您在存储桶侧设置静态网站并添加自定义域名,同时在 CDN 侧为存储桶源站配置回源 Host 为该自定义域名。
  • 方法二:CDN 回源 URL 改写。此方法是推荐的方式,配置集中在 CDN 侧,操作更加便捷。

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

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

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

  • 方法一:将首页文件设为公开。此方法要求您在保持存储桶私有的同时,单独将首页文件(例如 index.html)的权限设为“公共读”。这种方式虽然可行,但可能与您期望的严格安全策略相悖。此外,此方法还要求您在存储桶侧设置静态网站并添加自定义域名,同时在 CDN 侧为存储桶源站配置回源 Host 为该自定义域名。
  • 方法二:CDN 回源 URL 改写。此方法是推荐的方式,可以在不更改 TOS 存储桶或其中任何文件权限的前提下解决问题,兼顾了功能与安全。

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

综合以上两种场景,使用 CDN 的“回源 URL 改写”特性是解决首页访问问题的最佳实践。无论您的存储桶是公开还是私有,该方案无需在 TOS 侧配置自定义域名和静态网站特性。此外:

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

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

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

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

配置步骤

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

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

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

最近更新时间:2026.01.04 23:32:47
这个页面对您有帮助吗?
有用
有用
无用
无用