AWS EC2 Windows Server 2016部署Node.js后公网IP无法访问排查
排查AWS EC2 Windows Server 2016实例公网无法访问Node.js应用的问题
看起来你已经搞定了基础配置,但公网访问不通的话,大概率是下面这几个容易漏掉的环节,我给你逐个梳理:
Windows本地防火墙未放行80端口入站请求
Windows Server自带的防火墙默认会拦截外部对80端口的访问,哪怕你EC2安全组开了也没用。你可以打开「Windows Defender防火墙」→「高级设置」,新建一条入站规则:选择「端口」,指定TCP 80端口,允许连接,应用到所有网络类型,最后命名规则保存就行。Node.js应用绑定的地址不对
很多人写代码时习惯把服务绑定到127.0.0.1或者localhost,这会导致服务只监听本地回环网卡,外部请求根本进不来。你需要把监听地址改成0.0.0.0(监听所有可用网卡)或者实例的私网IP,比如代码里写成:app.listen(80, '0.0.0.0', () => { console.log('Server running on port 80'); });修改后重启应用再试试。
VPC网络ACL未正确配置
安全组是状态化的,但VPC的网络ACL是无状态的,需要同时放行入站和出站流量。你要检查实例所在子网的网络ACL:- 入站规则:添加允许TCP 80端口(源0.0.0.0/0)的条目
- 出站规则:添加允许TCP 1024-65535端口(目标0.0.0.0/0)的条目(因为客户端发起请求后,服务端会用这个范围内的端口响应)
确认公网IP的绑定状态
虽然你说用的是静态公网IP,但还是要确认下这个弹性公网IP(EIP)是不是已经正确关联到你的EC2实例上。进入EC2控制台,找到你的实例,在「描述」标签里看「公网IP」和「弹性IP」是否匹配,要是没绑定的话,赶紧在EIP控制台里把它关联到实例。
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

