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

EC2上用docker-compose部署FastAPI+Docker化Nginx无法访问排查

问题排查步骤

1. 检查EC2安全组配置

  • 确认安全组入站规则开放了80端口(如果用Nginx默认端口)或者你配置的自定义端口,来源设为0.0.0.0/0(测试用)或者你的固定IP
  • 顺便确认出站规则允许所有流量,避免容器通信异常

2. 验证容器端口映射是否正确

  • 打开docker-compose.yaml,检查Nginx服务的端口映射,比如是否是80:80(宿主机端口:容器端口),如果映射的是其他端口(比如8000),访问时要加端口号,比如http://EC2_IP:8000
  • 执行docker ps命令,看Nginx容器的PORTS列是否显示0.0.0.0:80->80/tcp,这说明端口已经正确映射到宿主机

3. 检查Nginx配置是否正确

  • 打开nginx_config.conf,确认反向代理地址是FastAPI服务的容器名(docker-compose自动创建的网络里,容器名可直接访问),比如:
    location / {
        proxy_pass http://fastapi-service:8000; # 这里的fastapi-service是docker-compose里FastAPI服务的service名称
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    
  • 确认docker-compose.yaml里是否用volumes把本地的nginx_config.conf挂载到容器内的正确路径,比如/etc/nginx/conf.d/default.conf
  • 进入Nginx容器执行nginx -t检查配置语法,命令:docker exec -it <nginx容器名> nginx -t

4. 测试EC2本地访问是否正常

  • 在EC2实例上执行curl http://localhost或者curl http://localhost:自定义端口,如果能返回FastAPI的响应,说明容器和宿主机映射没问题,问题出在EC2网络层面(安全组、防火墙)
  • 如果curl失败,就测试FastAPI服务本身:进入Nginx容器或其他容器,执行curl http://fastapi-service:8000,确认服务能正常响应

5. 检查EC2本地防火墙

  • 有些EC2实例开了ufw或firewalld,执行sudo ufw status或者sudo firewall-cmd --list-all,确认目标端口已开放
  • 如果端口没开放,执行sudo ufw allow 80或者对应的firewalld命令开放端口

6. 确认EC2的公网IP是否正确

  • 别把EC2的私有IP当成公网IP来访问,私有IP只能在VPC内部用,要去EC2控制台实例详情里找公网IPv4地址

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:15:32