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

部署NestJS到Elastic Beanstalk遇502错误及Web服务异常求助

排查Elastic Beanstalk部署Nest.js应用出现502 Bad Gateway的问题

针对你遇到的EB部署Nest.js后出现502、状态Degraded、Web服务未运行的问题,按以下步骤逐一排查:

1. 确认Nest.js应用的端口监听配置

Nest.js应用必须监听0.0.0.0而非默认的localhost,否则EB的Nginx反向代理无法访问到你的应用。同时要确保使用EB提供的端口环境变量或明确指定8080:

// src/main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  // 优先使用EB的PORT环境变量, fallback到8080
  const port = process.env.PORT || 8080;
  // 绑定0.0.0.0允许外部访问
  await app.listen(port, '0.0.0.0');
  console.log(`Application is running on: http://0.0.0.0:${port}`);
}
bootstrap();

2. 配置EB的生产环境启动命令

EB默认会执行npm start,但这个命令是启动开发服务器,生产环境应该使用start:prod命令:

  • 登录EB控制台,进入你的环境
  • 点击Configuration -> Software
  • 在Node command输入框中填入:npm run start:prod
  • 保存配置,触发重新部署

3. 查看EB实例日志定位错误

日志是排查问题的核心,重点查看以下日志文件:

  • Node.js应用日志:/var/log/nodejs/nodejs.log —— 查看应用启动时的报错(如依赖缺失、代码错误)
  • Nginx错误日志:/var/log/nginx/error.log —— 查看Nginx连接后端应用失败的原因
  • EB引擎日志:/var/log/eb-engine.log —— 查看部署过程中npm install、build命令是否执行失败

查看方式:

  • 控制台:EB环境 -> Logs -> Request logs -> Full log,下载或实时查看
  • EB CLI:本地执行 eb logs 拉取全部日志

4. 验证构建产物是否正确生成

  • 本地执行npm run build,确认dist文件夹下生成了main.js文件
  • 若本地构建失败,修复代码或依赖问题后再重新部署
  • 注意:EB默认执行npm install --production,如果构建需要devDependencies中的包(如@nestjs/cli、typescript),需将这些依赖移至dependencies,或在EB软件配置中设置NPM_USE_PRODUCTION为false(不推荐生产环境使用)

5. 手动测试实例内的应用启动

通过SSH连接到EB实例,手动启动应用验证是否正常:

  1. 本地执行eb ssh连接实例
  2. 进入应用目录:cd /var/app/current
  3. 执行生产启动命令:npm run start:prod
  4. 观察是否有报错输出,或用curl http://localhost:8080测试应用是否响应

6. 检查安全组与端口配置

  • 确保EB环境的安全组允许80端口的入站流量(用户访问EB URL走的是80端口)
  • 确认实例内部防火墙未限制8080端口的访问

内容的提问来源于stack exchange,提问作者Anh Dang Vien

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:44:57