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

EC2实例重启后Node.js服务运行但无法响应请求报502错误如何解决?

核心问题答复

实例重启后配置被修改/删除的可能性说明

该情况确实存在,常见的触发场景如下:

  • 你使用了EC2临时实例存储卷存储配置文件,临时存储为非持久化存储,实例重启后所有存储内容会被重置,会导致Nginx反向代理规则、应用配置、hosts映射等自定义配置丢失
  • 此前配置的规则未设置为永久生效:比如iptables/ufw的端口放行规则、端口转发规则仅临时生效未写入永久配置,实例重启后规则被自动清空
  • 应用依赖的环境变量仅临时写入终端会话,未写入~/.bashrc、/etc/profile或PM2的环境配置文件,实例重启后环境变量丢失,导致应用启动后逻辑异常

其他可能的故障原因

  • 端口监听地址配置错误:使用netstat检查时确认80端口的绑定地址,若绑定的是本地回环地址127.0.0.1而非0.0.0.0,公网请求无法到达服务端,会直接返回连接拒绝,需要修改应用代码的监听地址为0.0.0.0
  • 实例内部防火墙拦截:安全组为EC2外层网络管控规则,若实例内部的iptables/ufw未放行80端口入站请求,公网访问同样会被拦截,可临时清空iptables规则验证:iptables -F
  • 反向代理配置异常:如果此前使用Nginx/Apache做反向代理转发Node服务,实例重启后反向代理服务未启动、或转发规则/上游服务地址配置错误,都会返回502错误
  • 应用自身逻辑异常:虽然PM2显示进程存活、端口处于监听状态,但应用逻辑存在运行时错误,比如数据库连接参数错误、依赖的第三方服务不可用,收到请求后无法正常返回响应,可直接在实例本地执行curl验证:curl http://127.0.0.1:80,若本地访问也报错,说明是应用自身逻辑问题
  • SELinux策略拦截:若实例使用CentOS/RHEL系操作系统,默认开启的SELinux可能会拦截80端口的HTTP请求,可临时关闭SELinux验证:setenforce 0,若访问恢复正常,只需为80端口添加SELinux HTTP服务白名单即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:39:01