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

多网卡Windows Server上Docker部署React应用公网访问超时问题

问题排查与解决

根据你的场景(Windows Server双网卡,Docker容器本地可访问、公网访问超时),按以下步骤逐一排查:

1. 检查Windows防火墙入站规则

本地通过localhost:80访问走回环接口,防火墙默认允许,但公网网卡的80端口入站流量可能被拦截:

  • 打开「Windows Defender防火墙」→「高级设置」→「入站规则」
  • 新建规则:选择「端口」→「TCP」→特定本地端口填80→「允许连接」→勾选「公网」(或所有网络)→命名规则后保存
  • 测试公网访问是否恢复

2. 确认Docker端口绑定范围

Docker默认将端口绑定到0.0.0.0(所有网卡),但偶尔会出现仅绑定127.0.0.1的异常:

  • 在服务器上执行命令:netstat -ano | findstr ":80"
  • 如果输出显示127.0.0.1:80,说明仅绑定回环,修改docker-compose.yml的端口配置为:
    ports:
      - '0.0.0.0:80:80'
    
  • 重启容器:docker-compose down && docker-compose up -d

3. 排查双网卡路由冲突

双网卡同时配置默认网关时,服务器可能通过内网网卡返回公网请求的数据包,导致客户端超时:

  • 执行route print查看路由表,找到两条0.0.0.0开头的默认路由
  • 确认公网网卡的网关(x.x.229.201)的跃点数更低(优先级更高),如果内网网关跃点数更低,修改它的跃点数:
    • 打开「网络连接」→右键内网网卡→「属性」→「Internet协议版本4(TCP/IPv4)」→「属性」→「高级」→取消「自动跃点」,手动设置一个更大的数值(比如20)
  • 临时测试:禁用内网网卡的默认网关,再尝试公网访问

4. 检查Nginx监听配置

如果容器内Nginx仅监听127.0.0.1,即使Docker端口绑定正确,也无法接收外部流量:

  • 进入容器查看Nginx配置:docker exec -it front-prod cat /etc/nginx/conf.d/default.conf
  • 确认listen指令为listen 80;或listen 0.0.0.0:80;,而非listen 127.0.0.1:80;
  • 若配置错误,修改本地nginx/nginx.conf后重新构建容器:docker-compose build && docker-compose up -d

5. 核实公网网络环境限制

部分云服务商或机房会在网络层面拦截80端口:

  • 检查服务器所在服务商的安全组/防火墙规则,确认已开放80端口的入站流量
  • 若服务商禁止80端口,可尝试改用其他端口(比如8080),修改docker-compose.yml的端口为8080:80,同时更新防火墙和安全组规则

内容的提问来源于stack exchange,提问作者Алексей Гладков

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:32:48