You need to enable JavaScript to run this app. AWS S3+CloudFront托管站点深层路径访问报403的配置修复
优惠活动
大模型
产品
解决方案
定价
更多

AWS S3+CloudFront托管站点深层路径访问报403的配置修复

问题现象

基于 AWS S3 + CloudFront 搭建的静态站点,分层路径访问出现异常:

  • 访问根域名 https://mysamplesite.com 时功能完全正常
  • 直接访问深层路由 https://mysamplesite.com/some_link 时,返回403拒绝访问错误,错误信息如下:
AccessDenied Access Denied DB93462807BAEBCE MSGCoilI76PVfdpFFEuabJ/bdc0lvdIhGZqzabrlcKMUQifBwu37RtoA32mvy3BmD/OPK0WlG70=
  • 错误截图:错误截图
  • 对照测试:直接通过开启了静态网站托管的S3站点端点访问同一路径 https://mysamplesite.s3-website-us-east-1.amazonaws.com/some_link,页面可正常打开

配置修正方向

出现这个现象基本都是CloudFront对接S3静态站点时的配置没配对,按顺序核对调整即可解决:

  • 核对CloudFront源站配置
    如果创建源站时直接选了内置的S3存储桶选项,CloudFront会默认对接S3的REST API端点。这类端点没有静态网站托管的路径解析能力:当请求路径找不到对应对象时,不会默认返回index.html,而是直接抛出AccessDenied的403错误。
    修正方式:新建/修改源站类型为「自定义源站」,源站地址填你测试正常的S3静态网站端点域名,源站协议策略选HTTPS优先即可。
  • 配置自定义错误响应规则
    不管用哪种源站对接方式,只要是单页应用(SPA)架构,都需要在CloudFront中添加两条自定义错误响应:
    • 匹配HTTP状态码403,响应页面路径填/index.html,响应状态码返回200
    • 匹配HTTP状态码404,响应页面路径填/index.html,响应状态码返回200
      不配置这类规则时,碰到路由不匹配的请求会直接透传S3抛出的默认错误页面。
  • 检查OAC关联权限(仅使用内置S3源站时需要)
    如果为了走私有访问流程没接公开的S3静态网站端点,需要确认S3存储桶的权限策略已经授权CloudFront的OAC(源站访问控制)身份,允许对存储桶内所有对象执行s3:GetObject操作,否则所有非默认根路径的请求都会被S3拦截返回403。

内容的提问来源于stack exchange,提问作者John Grayson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 14:36:07