You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让AWS API Gateway启用自定义域名访问?

解决Cloudflare代理AWS API Gateway自定义域名的403与证书问题

核心方案:给API Gateway配置自定义域名+Cloudflare代理

这是无需迁移DNS到Route53或使用CloudFront的简便实现方式,步骤如下:

  1. 在AWS ACM申请自定义域名证书

    • 登录AWS Certificate Manager,选择us-east-1区域(API Gateway自定义域名要求证书必须在此区域)
    • 申请api.my-domain.com的证书,采用DNS验证方式:复制AWS生成的验证CNAME记录,到Cloudflare域名后台添加对应记录,快速完成验证
  2. 给API Gateway绑定自定义域名

    • 进入API Gateway控制台,打开「自定义域名」页面点击「创建」
    • 填写自定义域名api.my-domain.com,选择刚申请的ACM证书,关联你的API部署阶段(比如prod)
    • 完成后,AWS会生成一个API Gateway目标域名(格式类似d-abc123.execute-api.us-east-1.amazonaws.com),复制该域名备用
  3. 配置Cloudflare DNS与代理

    • 登录Cloudflare域名管理后台,添加一条CNAME记录:
      • 名称:api
      • 目标:粘贴刚才复制的API Gateway目标域名
      • 代理状态:开启(橙色云图标)
    • Cloudflare SSL模式设置为「严格」或「灵活」,推荐选择「严格」以保障加密链路完整
  4. 修复Cloudflare代理导致的403错误

    • 403通常由API Gateway的Host头校验或资源策略限制引发:
      • 检查API Gateway的资源策略,若有IP白名单,添加Cloudflare全量IP段;无需严格控制的话,可设置允许所有来源
      • 在Cloudflare「规则」→「转换规则」中添加一条修改请求头规则:
        • 匹配条件:主机名等于api.my-domain.com
        • 操作:添加请求头X-Forwarded-Host,值设为api.my-domain.com
      • 确保API Gateway的CORS配置正确:允许的Origin包含你的前端域名(或*用于测试),允许的请求方法包含OPTIONS,允许的请求头覆盖Content-Type等常用字段

为什么之前的方法失败?

  • 直接CNAME到原始API域名:AWS证书仅对*.amazonaws.com有效,与自定义域名不匹配,触发浏览器证书错误
  • 重定向方案:浏览器发送的OPTIONS预检请求不允许重定向,导致CORS报错
  • Cloudflare直接代理原始API域名:API Gateway会校验请求Host头,原始API域名要求Host为AWS域名,而Cloudflare转发的是自定义域名,因此返回403

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 05:12:24