AWS EC2实例8085端口连接被拒 NodeJS服务公网无法访问如何解决
问题根因
你的Node服务仅绑定了本地回环地址127.0.0.1(即localhost),该地址仅允许服务器本地内部访问,无法接收来自公网的请求,所以你从浏览器用EC2公网IP访问时会触发连接拒绝、端口未监听的报错。你执行netstat查询无结果的原因大概率是你执行命令时服务已经意外退出,或者你是在非服务运行的终端会话中执行的查询。
修复方案
- 修改服务代码,在
listen方法中显式指定绑定0.0.0.0地址,该地址代表监听服务器所有可用网卡的请求,修改后的代码如下:
const express = require('express'); const app = express(); const PORT = 8085; // 新增绑定所有网卡的配置 const BIND_HOST = '0.0.0.0'; app.get('/', (req, res) => { res.send("testing"); }); app.listen(PORT, BIND_HOST, () => { console.log(`Server running at: http://${BIND_HOST}:${PORT}/`); });
- 重新启动Node服务,确认控制台正常输出启动日志后,在服务器终端执行以下命令验证端口监听状态:
netstat -tunlp | grep 8085
如果配置正确,会返回类似以下结果,说明8085端口已经正常绑定到所有网卡:
tcp 0 0 0.0.0.0:8085 0.0.0.0:* LISTEN 1234/node
- 回到本地浏览器,输入
http://[你的EC2公网IP]:8085即可正常访问服务。
额外排查注意项
- 如果修改后仍无法访问,确认你的Node服务是在前台持续运行,没有因为终端断开、进程崩溃等原因退出,可以使用
pm2等进程管理工具托管Node服务保证后台稳定运行 - 确认你安全组的8085入站规则的源地址配置为
0.0.0.0/0(或你本地的公网IP段),协议为TCP
内容的提问来源于stack exchange,提问作者fernando
相关产品推荐
相关产品推荐

