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

Strapi 4部署AWS Elastic Beanstalk成功但无法访问URL求助

Strapi 4部署AWS Elastic Beanstalk无法访问的排查步骤

以下是针对你遇到的问题的关键排查点和解决方案:

1. 验证Docker端口映射配置

因为是Docker部署,负载均衡的80/443端口需要正确映射到容器内Strapi运行的1337端口:

  • 确保Dockerfile中包含EXPOSE 1337语句,声明容器暴露的端口。
  • 检查Dockerrun.aws.json(单容器部署用版本1,多容器用版本2)的端口映射配置,示例如下:
{
  "AWSEBDockerrunVersion": "1",
  "Ports": [
    {
      "ContainerPort": "1337",
      "HostPort": "80"
    }
  ]
}

该配置将EC2主机的80端口与容器的1337端口绑定,让负载均衡的流量能进入容器。

2. 检查安全组规则

  • 负载均衡安全组:必须允许互联网(0.0.0.0/0)的80(HTTP)和443(HTTPS)入站流量。
  • EC2实例安全组:需要允许负载均衡安全组访问实例的绑定端口(比如上面配置的80端口),确保负载均衡能将流量转发到实例。

3. 补充Strapi的URL配置

Strapi 4需要明确配置外部访问URL,否则可能导致路由或CORS问题。修改你的server.ts,添加url参数:

import cronTasks from './functions/cron_tasks';

export default ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  app: {
    keys: env.array('APP_KEYS'),
    url: env('APP_URL', 'http://lrd-api.ap-southeast-1.elasticbeanstalk.com'), // 新增此行
  },
  webhooks: {
    populateRelations: env.bool('WEBHOOKS_POPULATE_RELATIONS', false),
  },
  cron: {
    enabled: true,
    tasks: cronTasks,
  },
});

同时在EB环境变量中设置APP_URL为你的EB域名,保持配置灵活性。

4. 调整EB健康检查配置

EB默认的健康检查路径为/,但Strapi根路径可能不返回200状态码,导致负载均衡判定实例不健康,拒绝转发流量。修改健康检查路径为Strapi内置的健康端点:

  • 进入EB控制台,找到对应环境的「配置」→「负载均衡」→「健康检查」。
  • 将路径改为/health,该端点是Strapi 4默认提供的,会返回200状态码,确保负载均衡能正确识别实例状态。

5. 确认负载均衡监听规则

  • 检查负载均衡的80端口监听规则,确认转发目标是EC2实例的80端口(对应之前的端口映射)。
  • 如果使用HTTPS,需确保SSL证书已正确绑定到负载均衡的443监听,且转发规则指向实例的正确端口。

6. 本地连通性测试

  • 直接使用EC2实例的公网IP访问绑定端口(比如http://[实例IP]:80),如果能访问,说明问题出在负载均衡或域名解析;如果不能访问,需排查容器启动状态或端口映射是否生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:50:21