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

开发环境Nginx Docker无法连接PHP Docker,报File not found错误求助

links:
  - php-dev  # 这里明确关联的是php-dev服务

php-dev:
container_name: php-dev
image: php:7.2-fpm-alpine3.7
...
ports:
- 9001:9000 # 主机端口9001映射到容器内部的9000端口
...

### 开发环境Nginx站点配置
```nginx
server {
    listen 80;
    server_name trombi.xxx.xyz www.trombi.xxx.xyz;

    location / {
        root /usr/share/nginx/trombi.xxx.xyz;
        index index.html index.htm index.php;
        try_files $uri $uri/ /index.php$is_args$args;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~* \.PHP$ {
        fastcgi_index index.php;
        fastcgi_pass php:9000;  # 这里是问题所在!
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /usr/share/nginx/trombi.xxx.xyz/$fastcgi_script_name;
    }
}

Nginx错误日志

2018/05/17 06:59:47 [error] 8#8: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 172.19.0.5, server: trombi.xxx.xyz, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://172.20.0.4:9000", host: "trombi.xxx.xyz"
172.19.0.5 - - [17/May/2018:06:59:47 +0000] "GET /info.php HTTP/1.1" 404 47 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36 OPR/52.0.2871.97"

解决方案

感谢@Constantin Galbenu的提示,只需要修改Nginx配置中的fastcgi_pass目标地址:

把:

fastcgi_pass php:9000;

修改为:

fastcgi_pass php-dev:9000;

补充说明

  • php-dev是docker-compose中定义的开发环境PHP服务名称,容器间通信需要用这个服务名来寻址
  • PHP-FPM容器内部监听的是9000端口,你配置的9001:9000只是主机到容器的端口映射,容器间通信直接用内部的9000端口即可
  • 额外提个小建议:你的location ~* \.PHP$是匹配大写后缀的请求,建议改成location ~* \.php$,这样能兼容小写的.php后缀请求,避免不必要的访问问题

修改完成后,重启Nginx-Dev容器,就能正常连接到开发环境的PHP-FPM服务了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:21:39