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

在AWS EC2部署Node服务遇Nginx connect ECONNREFUSED错误求助

AWS实例外网访问80端口报错ECONNREFUSED的排查与解决

核心问题现象

将Node服务通过Nginx反向代理部署到AWS EC2实例后,外网通过HTTP访问实例公网IP的80端口时,报错Error: connect ECONNREFUSED [INSTANCE PUBLIC IP]:80;但在实例内部执行curl http://localhost:80可正常获取Node服务响应,且Nginx日志会记录该请求,外网请求无对应日志。

已完成的排查信息

  • 安全组已开放80端口
  • VPC配置已开放所有端口
  • Nginx配置正常,反向代理指向localhost:3000
  • Nginx服务处于运行状态
  • netstat显示0.0.0.0:80处于监听状态,Node服务监听:::3000(IPv6)
  • SELinux处于permissive模式,无权限拦截

针对性排查与解决步骤

1. 重新校验安全组入站规则

  • 登录AWS EC2控制台,进入实例详情页,确认关联的安全组。
  • 检查HTTP (80) 入站规则的源地址是否为0.0.0.0/0(允许所有外网IP访问),避免误设为仅VPC内网段(如172.31.0.0/16)。
  • 确保规则协议为TCP,端口范围80,状态为“允许”。

2. 检查网络ACL(NACL)的双向规则

NACL是VPC的子网级防火墙,需同时配置入站和出站允许规则:

  • 入站规则:添加优先级100的规则,允许TCP 80端口,源地址0.0.0.0/0。
  • 出站规则:添加优先级100的规则,允许TCP 32766-65535临时端口,目标地址0.0.0.0/0(TCP连接需要返回流量,临时端口用于响应包)。
  • 注意:NACL默认规则为拒绝所有,需确保允许规则优先级高于拒绝规则。

3. 确认子网路由表的互联网访问配置

  • 进入VPC控制台,查看实例所在子网关联的路由表。
  • 确认路由表中存在一条目标为0.0.0.0/0,下一跳为**Internet Gateway(IGW)**的路由,且IGW已成功附加到当前VPC。

4. 优化Nginx监听配置

虽然netstat显示0.0.0.0:80已监听,但明确指定IPv4监听地址可避免潜在的协议兼容问题:
修改Nginx配置文件:

server {
    listen 0.0.0.0:80; # 明确监听所有IPv4地址
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

重启Nginx:

sudo systemctl restart nginx

5. 排除本地网络限制

  • 在本地执行telnet [INSTANCE PUBLIC IP] 80,测试是否能建立TCP连接。若连接失败,尝试切换至手机热点等其他网络,排除本地路由器或防火墙的拦截。
  • 确认本地网络可正常访问其他外网HTTP服务(如curl http://example.com)。

6. 确认公网IP有效性

  • 登录EC2控制台,核对实例当前的公网IPv4地址,确保与访问时使用的IP一致。临时公网IP会在实例重启后变更,若需固定IP,建议绑定弹性IP。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:14:57