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

App Engine标准环境下Cloud Endpoints 2.0自定义域名API无法访问求助

排查Cloud Endpoints 2.0自定义域名访问404问题

看起来你已经完成了大部分配置,但出现404错误通常是路径匹配或者部署环节出了问题,我帮你梳理几个容易遗漏的点:

1. 不要省略Endpoints的核心路径前缀/_ah/api

你原来的API访问路径是https://api-dot-[projectId]-appspot.com/_ah/api/myApi/v1/path,其中/_ah/api是EndpointsServlet的核心映射路径——自定义域名下访问时同样需要保留这个前缀。

你现在尝试的https://api.mydomain.app/myApi/v1/path缺少了这个关键前缀,正确的访问路径应该是:

https://api.mydomain.app/_ah/api/myApi/v1/path

这是因为你的web.xml里明确把EndpointsServlet映射到了/_ah/api/*,没有这个前缀的请求不会被Endpoints处理,自然会返回404。

2. 确认dispatch.xml的部署位置和生效状态

dispatch.xml是全局路由规则,必须部署在**App Engine默认模块(通常是default模块)**的WAR包中,而不是api模块里。很多人会误把它放在目标模块里,导致规则完全不生效。

另外,修改dispatch.xml后,需要重新部署默认模块才能让规则生效,示例命令如下:

gcloud app deploy default/dispatch.xml

你也可以通过GCP控制台的App Engine > 服务页面,查看dispatch路由是否已经正确显示api.mydomain.app/*指向api模块,来验证规则是否生效。

3. 验证自定义域名的DNS映射完全生效

虽然你配置了CNAME记录,但DNS解析可能存在延迟,尤其是GoDaddy的DNS有时候生效较慢。你可以通过命令行验证解析结果:

nslookup api.mydomain.app

或者

dig api.mydomain.app

确认返回的IP地址是Google托管服务器的地址(通常以192.168.x.x或2607:f8b0:x.x开头)。如果解析结果不对,需要等待DNS生效,或者检查GoDaddy的记录配置是否正确(比如CNAME的*是否覆盖了api子域名)。

4. 检查api模块的部署状态

确保api模块已经成功部署,并且有正常运行的实例:

  • 登录GCP控制台,进入App Engine > 服务
  • 找到api模块,确认状态是运行中,且版本是你期望的版本
  • 如果模块刚部署,可能需要等待几分钟让实例完全启动

5. 可选:直接在自定义域名设置中映射子域名到模块

如果你不想依赖dispatch.xml,可以直接在App Engine的自定义域名页面,把api.mydomain.app直接映射到api模块:

  1. 进入App Engine > 设置 > 自定义域名
  2. 找到你添加的mydomain.app域名,点击添加子域名
  3. 输入api,选择api模块和对应的版本,保存设置
    这种方式更直接,也能避免dispatch.xml配置错误的问题。

按照以上步骤排查后,应该能解决404的问题。如果还是不行,可以查看App Engine的日志 > 请求日志,筛选api模块的请求,看看具体的请求路径和路由匹配情况,进一步定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:50:59