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

AWS EC2 Ubuntu实例运行Docker容器访问公网DNS连接被拒如何解决

问题排查与解决方案

核心原因排查方向

  • 端口访问规则配置错误:你的前端服务映射在EC2实例的3000端口、后端在5000端口,但你访问的是默认443端口的HTTPS地址,且AWS EC2安全组默认没有放行3000、5000端口的入站规则。
  • 协议不匹配:你使用HTTPS协议访问,但React前端默认启动的是HTTP服务,没有配置SSL证书的情况下HTTPS请求会直接被拒绝。
  • Ubuntu防火墙未放行端口:EC2实例的Ubuntu系统默认ufw防火墙可能没有开放3000、5000端口的访问权限。
  • 服务监听地址配置问题:如果你的React或Node服务配置为仅监听127.0.0.1,会导致公网请求无法命中服务。

分步解决方案

第一步:修正访问地址

你的前端服务运行在3000端口,使用HTTP协议访问,正确访问地址应为 http://ec2-52-90-91-101.compute-1.amazonaws.com:3000,不要使用HTTPS协议,也不要省略端口号。

第二步:配置EC2安全组入站规则

  1. 登录AWS控制台,进入对应EC2实例的安全组配置页
  2. 添加入站规则:
    • 类型:自定义TCP,端口范围:3000,源:0.0.0.0/0(如果需要限制访问源可以指定固定IP段)
    • 类型:自定义TCP,端口范围:5000,源:0.0.0.0/0
  3. 保存规则后等待1分钟生效。

第三步:放行Ubuntu系统防火墙端口

登录EC2实例终端,依次执行以下命令:

sudo ufw allow 3000/tcp
sudo ufw allow 5000/tcp
sudo ufw reload

第四步:验证服务监听配置

确认你的React和Node服务的监听地址为0.0.0.0而非127.0.0.1:

  • Node服务启动时监听地址配置为0.0.0.0:5000
  • React项目在package.json的启动脚本中添加--host 0.0.0.0参数,示例:"start": "react-scripts start --host 0.0.0.0"

可选优化(如需直接用HTTPS/默认端口访问)

如果不想访问时带端口号,可以加一层Nginx反向代理,监听80/443端口,将请求转发到3000/5000端口,同时配置SSL证书即可支持HTTPS访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:48:01