部署在AWS的Node.js API无法从本地访问该如何解决?
问题排查步骤
- Windows实例本地防火墙配置检查:AWS安全组是云平台层面的访问控制,Windows Server默认自带的防火墙会拦截外部入站的80端口请求。需要进入Windows Defender防火墙 -> 高级设置 -> 入站规则,新增规则放行TCP 80端口的入站访问。
- Node服务监听地址修正:当前代码中的
app.listen(port)默认会绑定到127.0.0.1地址,仅允许实例本地访问。修改监听逻辑为绑定所有网卡地址即可允许外部访问:
const express = require('express') const app = express() const port = 80 app.get('/', (req, res) => { res.send('Hello World!') }) app.listen(port, '0.0.0.0', () => { console.log(`Example app listening at http://0.0.0.0:${port}`) })
- 子网路由表校验:确认实例所属子网的路由表中存在
0.0.0.0/0指向互联网网关(IGW)的路由条目,若缺少该条目实例无法被公网访问。 - 网络ACL配置检查:确认实例所属子网关联的网络ACL没有拦截80端口的入站/出站请求,网络ACL是子网层面的无状态访问控制,默认会放行所有流量,若有自定义配置需要同步放开80端口规则。
- 端口封禁排查:部分地区运营商会默认封禁个人宽带的80端口出站请求,可以将服务端口临时改为8080,同步修改安全组、Windows防火墙规则后再测试访问,确认是否为运营商端口封禁问题。
- 公网地址确认:核对你本地访问使用的公网DNS/IP是否与AWS控制台实例详情页显示的一致,若实例未绑定弹性IP,重启实例后公网地址会发生变更。
内容的提问来源于stack exchange,提问作者Krunal Jethi
相关产品推荐
相关产品推荐

