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

容器外Nginx代理容器内PHP-FPM报错:upstream主机'app'无法找到

解决Nginx无法解析upstream主机'app'的问题

问题根源

Docker Compose里的服务名app是Docker内部网桥网络的专属域名,只有同一Docker网络里的容器能直接识别。VM里的Nginx不在这个网络体系内,自然找不到app这个主机。


快速修复:改用VM本地地址

因为你的Docker容器已经把9000端口映射到了VM的9000端口,直接修改Nginx配置里的fastcgi_pass即可:

  1. 编辑Nginx站点配置:
location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass localhost:9000; # 替换原来的 app:9000
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
  1. 重启Nginx生效:
sudo systemctl restart nginx

进阶方案:让Nginx加入Docker网络

如果想继续用app作为主机名,可将VM的Nginx接入Docker Compose的网络:

  1. 先查询Docker Compose创建的网络名:
docker network ls
# 一般格式为「项目目录名_default」,比如 backend_prep_default
  1. 将VM的默认网络接口接入该Docker网络(需root权限):
# 替换 YOUR_NETWORK_NAME 为上一步查到的实际网络名
docker network connect YOUR_NETWORK_NAME docker0

操作完成后,Nginx就能直接解析app主机名,无需修改原有配置。


额外检查项

  • 确认Nginx的root路径正确:当前配置的/var/www/public需对应到你的项目目录,应修改为/var/www/backend/prep/public,否则后续会出现文件找不到的错误。
  • 确保Docker容器正常运行:执行docker-compose up -d启动容器,再用docker-compose ps检查容器状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 00:31:07