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

公共WiFi下EC2部署网站的HTTP请求被阻断问题排查

排查公共WiFi下EC2 MEAN应用后端连接失败问题

从你的描述和net-internals日志来看,这个问题核心是TCP连接无法建立(日志里的ERR_CONNECTION_TIMED_OUT和os_error=60),而非CORS配置或AWS安全组的问题——毕竟你在其他网络环境下能正常访问,说明安全组和CORS设置是有效的。下面是具体的排查和解决步骤:

1. 优先排查公共WiFi的端口封锁(最可能的原因)

很多公共WiFi为了网络安全,会默认封锁80、443之外的非标准端口(你的后端用的是3001端口,属于这类)。这是公共网络的常见限制,和AWS配置无关。

验证方法

在公共WiFi环境下,用以下命令测试端口连通性:

# 测试TCP连接是否能建立
nc -zv 35.153.17.199 3001
# 或者用telnet
telnet 35.153.17.199 3001

如果返回连接超时或拒绝,就坐实了端口被封锁的问题。

解决方案

  • 方案一:把后端服务迁移到标准端口:让Express监听80(HTTP)或443(HTTPS)端口(需要root权限,或者用setcap给Node进程授权)。
  • 方案二:用Nginx做反向代理:在EC2上安装Nginx,监听80端口,将请求转发到3001端口。示例Nginx配置:
    server {
        listen 80;
        server_name your-domain.com;
    
        location / {
            proxy_pass http://localhost:3001;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    
  • 方案三:使用AWS弹性负载均衡(ELB):创建一个ALB(应用负载均衡),将80端口的流量转发到EC2实例的3001端口,同时确保ALB的安全组允许公共访问。

2. 检查公共WiFi的DNS解析问题

部分公共WiFi的DNS服务器可能存在解析故障,导致你的域名无法正确指向EC2的IP。

验证方法

在公共WiFi下执行:

nslookup your-domain.com
# 或者
dig your-domain.com

看返回的IP是否是35.153.17.199。如果解析错误或超时,可以手动切换DNS服务器(比如谷歌的8.8.8.8或Cloudflare的1.1.1.1)再测试。

3. 排除AWS子网NACL的限制

虽然你的EC2安全组允许所有TCP流量,但子网的**网络ACL(NACL)**是另一个层级的防火墙,可能存在入站/出站规则限制3001端口。

排查步骤

  • 登录AWS控制台,找到EC2实例所在的子网
  • 查看子网的NACL规则:确保入站规则允许TCP 3001从0.0.0.0/0访问,同时出站规则允许TCP 3001的响应流量返回。

补充说明:关于「Provisional Headers are Shown」

这个提示是浏览器的正常表现,因为TCP连接根本没建立成功,浏览器无法从服务器获取响应头,所以只能显示临时的请求头——它是连接失败的结果,而非原因,不用针对这个提示本身排查。

另外,你的CORS配置看起来没问题,因为CORS是HTTP层面的校验,只有当TCP连接建立、HTTP请求发送后才会触发,而现在连TCP都没通,所以CORS不是问题所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:09:03