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

AWS EC2 Windows实例部署Hello World Web应用后无法外部访问求助

排查步骤及解决方案

1. 确认.NET应用的监听地址

这是最容易遗漏的核心问题:多数.NET应用(尤其是Kestrel托管的)默认仅绑定localhost,导致仅本地可访问。

  • 打开应用的appsettings.json,检查Kestrel配置:
    "Kestrel": {
      "Endpoints": {
        "Http": {
          "Url": "http://0.0.0.0:80"
        }
      }
    }
    
    或启动时强制指定监听地址:dotnet run --urls=http://0.0.0.0:80
  • 验证监听状态:在EC2实例命令行执行netstat -ano | findstr ":80",确认输出包含0.0.0.0:80(而非仅127.0.0.1:80),并记录对应PID。

2. 检查EC2子网路由配置

  • 确认实例所属子网的路由表已关联互联网网关(IGW):
    进入AWS VPC控制台,找到子网绑定的路由表,检查是否存在0.0.0.0/0指向IGW的路由条目,无则添加。
  • 确认实例已分配有效公网IP/弹性公网IP(EIP):
    在EC2实例详情页查看「公网IP」字段,确保有有效值(可临时开启Windows ICMP规则测试ping连通性)。

3. 验证子网网络ACL的双向规则

NACL是无状态规则,必须同时配置入站和出站放行:

  • 入站规则:允许0.0.0.0/0访问目标端口(80/5001/8080)
  • 出站规则:允许0.0.0.0/0的所有端口(至少要放行应用的响应流量,可临时全开测试)

4. 检查Windows端口监听权限

非管理员用户绑定1024以下端口需额外授权:

  • 执行netsh http show urlacl,查看是否存在http://+:80/的权限条目
  • 若无,以管理员身份执行:netsh http add urlacl url=http://+:80/ user=Everyone,之后重启应用

5. 做端口连通性测试

  • 从同子网其他EC2实例执行:Test-NetConnection <目标实例私网IP> -Port 80,确认是否能建立连接
  • 若同子网也无法访问,排除公网问题,聚焦实例内部、安全组或NACL配置

6. 确认应用运行状态

  • 用任务管理器检查之前netstat查到的PID对应进程是否正常运行
  • 查看应用日志文件,确认无启动失败、端口绑定失败等报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:27:19