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

Google Cloud Load Balancer与App Engine Blobstore兼容问题求助:/_ah/upload/请求返回404错误

解决负载均衡下Blobstore上传URL返回404的问题

这问题我之前帮好几个开发者排查过,核心原因是GCP的Blobstore上传端点(/_ah/upload/)是App Engine原生服务负责转发处理的——你不需要单独把Blobstore添加为负载均衡的后端服务,而是要确保LB把这类请求正确路由到你的App Engine应用,再由App Engine内部转发到Blobstore。

下面是具体的排查和解决步骤:

  • 调整负载均衡的URL映射规则
    你需要在LB的URL映射里,新增一条规则:把/_ah/upload/*路径的请求专门路由到你的App Engine服务(而不是其他自定义后端比如Cloud Run、Compute Engine)。这个路径是App Engine的特殊路由,只有App Engine runtime能正确处理并转发到Blobstore,所以必须确保LB不会把这些请求分流到其他地方。

  • 检查App Engine的基础配置
    确认你的App Engine应用已经启用了Blobstore服务(默认是开启的,但可以在GCP控制台的「App Engine -> 应用设置」里确认)。另外,检查你生成上传URL的代码逻辑——必须用官方SDK提供的方法(比如Python的blobstore.create_upload_url()),这类方法生成的URL会自动绑定到你的App Engine服务,确保后续请求能被正确处理。

  • 验证Serverless NEG(如果用了的话)
    如果你的LB是通过Serverless NEG指向App Engine的,要确保NEG配置包含了你的App Engine服务的所有版本,并且没有设置路径过滤规则排除/_ah/upload/。同时检查LB的转发规则,确认HTTP/HTTPS端口(80/443)的配置正确,且没有防火墙规则阻止请求到达App Engine。

  • 用Cloud Logging追踪请求轨迹
    这是排查这类问题最有效的方式:

    1. 查看LB的访问日志,确认/_ah/upload/的请求是否被正确路由到了App Engine后端;
    2. 查看App Engine的请求日志,确认这些请求是否到达了你的应用,或者是否被App Engine内部转发到Blobstore;
      如果日志显示请求根本没到App Engine,那肯定是URL映射的问题;如果到了App Engine但返回404,要检查你的应用代码有没有自定义路由覆盖了/_ah/upload/(比如Flask/Django里不小心注册了这个路径的路由)。
  • HTTPS负载均衡的额外注意事项
    如果你的LB是HTTPS的,要确保生成上传URL时指定了HTTPS协议。有些旧代码可能默认生成HTTP的上传URL,当LB强制HTTPS时,会导致重定向异常或者404。比如Python SDK里可以用blobstore.create_upload_url(..., secure=True)来生成HTTPS的上传URL。

最后再强调一下:Blobstore不需要单独作为LB的后端,它是和App Engine深度集成的——只要让/_ah/upload/*的请求先到你的App Engine服务,剩下的转发工作App Engine会自动处理,就和你不用LB时的流程一样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 09:53:13