部署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实例,手动启动应用验证是否正常:
- 本地执行
eb ssh连接实例 - 进入应用目录:
cd /var/app/current - 执行生产启动命令:
npm run start:prod - 观察是否有报错输出,或用
curl http://localhost:8080测试应用是否响应
6. 检查安全组与端口配置
- 确保EB环境的安全组允许80端口的入站流量(用户访问EB URL走的是80端口)
- 确认实例内部防火墙未限制8080端口的访问
内容的提问来源于stack exchange,提问作者Anh Dang Vien
相关产品推荐
相关产品推荐

