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

CDK部署AWS API Gateway请求路径丢失致后端404问题

解决API Gateway HTTP代理到NLB时路径丢失的404问题

问题背景

部署架构为:API GW(REST API)→ VPC LINK → NLB → 监听器/目标组 → ECS服务 → EC2容器实例。所有组件健康状态正常,直接调用NLB的/my_method/{param}路径可正常响应,但通过API Gateway测试时,后端uvicorn服务器收到的请求路径为/,返回404错误。

当前CDK集成配置如下:

vpc_integration = apigateway.Integration(
            type=apigateway.IntegrationType.HTTP_PROXY,
            integration_http_method=HttpMethods.ANY,
            options=apigateway.IntegrationOptions(
                connection_type=apigateway.ConnectionType.VPC_LINK, vpc_link=link
            ),
        )

核心原因

API Gateway的HTTP_PROXY集成默认不会自动将完整请求路径传递给后端服务,若未明确配置路径映射规则,只会将根路径/转发给后端。

解决方案

修改CDK集成配置,补充路径传递的关键配置:

修改后的集成代码

vpc_integration = apigateway.Integration(
    type=apigateway.IntegrationType.HTTP_PROXY,
    integration_http_method=HttpMethods.ANY,
    # 追加${request.path}以传递完整请求路径到NLB
    uri=f"http://{你的NLB_DNS地址}/${{request.path}}",
    options=apigateway.IntegrationOptions(
        connection_type=apigateway.ConnectionType.VPC_LINK,
        vpc_link=link,
        # 映射路径参数到集成请求
        request_parameters={
            "integration.request.path.param": "method.request.path.param"
        }
    ),
)

关键配置说明

  1. URI路径追加:在NLB的DNS地址后添加/${request.path},API Gateway会将当前请求的完整路径(如/my_method/123)拼接在NLB地址后,转发给后端服务。
  2. 路径参数映射:针对定义的{param}路径参数,通过request_parameters将API Gateway方法的路径参数映射到集成请求的路径中,确保参数正确传递。
  3. 资源方法绑定:确保API Gateway中/my_method/{param}资源对应的HTTP方法(如GET)已绑定上述集成配置。

验证操作

  1. 重新部署CDK栈,更新API Gateway配置。
  2. 测试API Gateway的/my_method/{param}路径,查看后端容器日志,确认请求路径已正确传递(如日志显示GET /my_method/123 HTTP/1.1)。
  3. 检查响应结果是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 08:36:59