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

求助:无法访问运行在Amazon Linux EC2上的NestJS服务器

排查EC2上NestJS服务无法通过公网访问的问题

针对你遇到的问题,按以下步骤逐一排查:

  • 检查NestJS服务的绑定地址
    默认情况下,NestJS的app.listen(3000)会绑定到localhost(仅本地可访问)。你需要修改src/main.ts中的监听配置,让服务绑定到所有网卡:

    // src/main.ts
    await app.listen(3000, '0.0.0.0');
    

    修改后重新执行npm run build和npm run start:prod重启服务。

  • 验证服务监听状态
    在EC2实例中执行以下命令,确认服务是否正确监听3000端口且绑定地址为0.0.0.0:

    ss -tulpn | grep 3000
    

    如果输出显示127.0.0.1:3000,说明绑定地址错误,按第一步修改即可;如果没有输出,说明服务未正常启动,检查启动日志排查问题。

  • 检查EC2实例的系统防火墙
    部分Linux发行版(如Ubuntu)默认启用防火墙,可能未开放3000端口:

    • 对于ufw防火墙:
      sudo ufw status
      # 如果未开放3000端口,执行:
      sudo ufw allow 3000/tcp
      
    • 对于iptables:
      sudo iptables -L | grep 3000
      # 如果无输出,添加规则:
      sudo iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
      
  • 确认安全组配置有效性
    确保安全组的入站规则满足:

    • 协议为TCP,端口范围3000
    • 源地址设置为0.0.0.0/0(允许所有公网IP访问)或你当前的公网IP
    • 该安全组已正确绑定到你的EC2实例
  • 测试内部访问连通性
    在EC2实例内部执行:

    curl http://localhost:3000
    # 或使用私有IP
    curl http://<你的EC2私有IP>:3000
    

    如果内部访问正常,说明问题出在外部网络层面;如果内部也无法访问,重点排查服务启动配置和依赖问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 06:22:21