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

Angular升级后SSR部署遇502错误,无日志如何排查?

问题原因分析
  • Node.js版本兼容性:Angular最新版本生成的.mjs文件可能需要更高版本的Node.js支持,虽然本地直接运行无报错,但PM2使用的Node环境可能和终端环境不一致。
  • PM2配置细节错误:比如ecosystem.config中入口文件的相对/绝对路径写错,或者端口配置与Nginx转发端口不匹配——即便实例显示在线,也可能未监听正确端口。
  • 服务监听地址不匹配:Angular SSR服务可能修改了监听地址(比如从127.0.0.1改为0.0.0.0,或反之),导致Nginx无法建立连接。
  • 文件权限问题:PM2运行用户无main.server.mjs所在目录的读取权限,实例虽显示在线,但服务实际无法正常处理请求。
调试步骤
  1. 验证PM2实例真实状态
    • 执行pm2 show <你的实例名>,核对status、port、script path等信息,确认端口和路径正确;同时查看restart count,若频繁重启说明服务启动后崩溃。
    • 查看PM2日志细节:pm2 logs <实例名> --lines 100,即便无明显错误,也可能存在启动时的警告信息。
  2. 检查Node环境一致性
    • 终端执行node -v,再执行pm2 env <实例名>查看PM2使用的Node版本,确保两者一致——Angular最新版本通常要求Node.js 18+。
  3. 验证服务监听地址与端口
    • 直接运行node main.server.mjs后,用netstat -tulpn | grep <端口号>或ss -tulpn | grep <端口号>检查服务监听的地址,确认与Nginx配置中的转发地址匹配(比如都是127.0.0.1)。
  4. 本地测试服务可用性
    • 在服务器上执行curl http://127.0.0.1:<端口号>或wget http://127.0.0.1:<端口号>,若能正常返回内容,问题出在Nginx;若返回失败,说明服务存在隐性启动问题。
  5. 排查文件权限
    • 查看文件权限:ls -l <main.server.mjs路径>,确保PM2运行用户(如www-data或登录用户)有读权限。可临时执行chmod +r main.server.mjs测试,或切换到PM2用户运行node main.server.mjs验证。
  6. 排查Nginx隐性问题
    • 重新加载Nginx配置:nginx -s reload,确保配置生效。
    • 查看Nginx访问日志(默认路径/var/log/nginx/access.log),确认请求是否到达Nginx,以及转发端口是否正确。
    • 临时修改Nginx配置,添加proxy_connect_timeout 10s;和proxy_send_timeout 10s;,延长超时时间排查是否因连接超时导致502。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:22:32