AWS Windows EC2上Node.js应用绑定弹性IP报EADDRNOTAVAIL求助
解决AWS Windows EC2上Node.js应用无法通过弹性IP访问的问题
核心解决方案
不要将弹性IP作为listen的绑定地址,改为绑定0.0.0.0,让应用监听服务器所有可用网络接口:
const port = 80; app.listen(port, '0.0.0.0', () => { console.log(`App listen on port ${port}!`) });
原因说明
- 弹性IP是AWS分配的公网IP,并非EC2实例本地网卡配置的实际IP(
ipconfig返回的是内网私IP)。Node.js的listen方法要求绑定的地址必须是服务器本地网卡存在的IP,直接指定弹性IP会触发EADDRNOTAVAIL错误。 - IIS或Apache默认监听所有网络接口(等效于绑定
0.0.0.0),因此可以正常响应弹性IP的请求。
额外检查项
- EC2安全组:确认实例安全组已配置入站规则,允许80端口的流量(来源可设为
0.0.0.0/0或需要访问的IP范围)。 - Windows防火墙:检查系统防火墙是否允许Node.js应用的80端口入站连接,可临时关闭防火墙验证是否是防火墙拦截。
- 端口占用:用命令
netstat -ano | findstr ":80"检查80端口是否被其他进程占用,若被占用可更换端口或停止占用进程。
内容的提问来源于stack exchange,提问作者Emmanuel
相关产品推荐
相关产品推荐

