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

部署Strapi至Google App Engine后无法访问URL的问题排查

问题诊断

  1. 端口不匹配:从运行日志可见,Strapi实际启动在8081端口,但你的app.yaml中PORT环境变量设为1337,Dockerfile也暴露了1337端口。Google App Engine会将外部请求转发到指定的PORT端口,而Strapi未在该端口监听,导致请求无法到达,出现404和超时;同时App Engine的健康检查因端口不对失败,触发实例反复重启。
  2. 健康检查失败引发重启:App Engine默认会定期向实例指定端口发送健康检查请求(默认路径/health),若Strapi无响应或端口错误,平台会判定实例不健康,强制重启——这就是即便max_instances=1,服务仍多次重启的原因。

解决方案

1. 统一端口配置

确保Strapi监听端口与App Engine配置一致:

  • 推荐沿用Strapi默认端口1337,需调整Strapi的config/server.js文件,明确绑定该端口:
// config/server.js
module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  app: {
    keys: env.array('APP_KEYS'),
  },
});

同时保持app.yaml中env_variables的PORT为1337,Dockerfile的EXPOSE 1337无需修改。

2. 配置健康检查端点

Strapi默认无/health端点,需手动添加或调整App Engine健康检查路径:

  • 方法一:添加自定义健康路由
    在Strapi项目中新建路由文件src/api/health/routes/health.js:
module.exports = {
  routes: [
    {
      method: 'GET',
      path: '/health',
      handler: 'health.index',
      config: { auth: false },
    },
  ],
};

对应控制器文件src/api/health/controllers/health.js:

module.exports = {
  index: (ctx) => {
    ctx.status = 200;
    ctx.body = { status: 'ok' };
  },
};
  • 方法二:修改App Engine健康检查配置
    在app.yaml中添加健康检查规则,指定Strapi可响应的路径:
readiness_check:
  path: "/health"
  check_interval_sec: 30
  timeout_sec: 4
  failure_threshold: 2
  success_threshold: 2
  app_start_timeout_sec: 300

liveness_check:
  path: "/health"
  check_interval_sec: 30
  timeout_sec: 4
  failure_threshold: 2
  success_threshold: 2

3. 调整实例缩放策略

当前basic_scaling设置idle_timeout:5m,实例空闲5分钟会被关闭,后续请求需重新启动实例,也会导致重启现象。若需保持实例持续运行,可改为manual_scaling:

manual_scaling:
  instances: 1

4. 验证配置

重新部署后,通过gcloud app logs read查看Strapi启动日志,确认监听端口与配置一致;同时检查健康检查请求日志,确保返回200状态码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:40:21