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

如何使用Docker外部安装的Nginx代理容器内的php-fpm服务

外部Nginx代理Docker内php-fpm服务操作指南

1. 配置php-fpm容器启动参数

启动容器时必须完成两项配置:端口映射、项目目录挂载

  • 端口映射:将容器内php-fpm默认监听的9000端口绑定到宿主机环回地址,避免公网暴露,示例启动命令:
    docker run -d -p 127.0.0.1:9000:9000 -v /data/wwwroot/my-project:/app bitnami/php-fpm:latest
  • 路径对齐要求:宿主机的项目目录挂载到容器内的路径,要和后续Nginx配置里的root路径完全一致,比如上面的示例里宿主机路径是/data/wwwroot/my-project,容器内路径也是/app,后续Nginx的root就要填/data/wwwroot/my-project
  • 可选宿主机网络模式:如果是本地测试场景,也可以使用宿主机网络启动容器,无需手动映射端口,启动命令为:
    docker run -d --network host -v /data/wwwroot/my-project:/app bitnami/php-fpm:latest

2. 配置宿主机Nginx代理规则

在宿主机Nginx的站点配置目录下新增配置文件,示例规则如下:

server {
    listen 80;
    server_name 你的站点域名或IP;
    # 此处路径必须和php-fpm容器内的项目挂载路径完全一致
    root /data/wwwroot/my-project;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri =404;
        # 此处填写容器端口映射到宿主机的对应地址
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

3. 验证配置生效

  • 执行nginx -t测试Nginx配置是否语法正确,提示success后再执行下一步
  • 执行systemctl reload nginx重载Nginx配置(不同发行版命令可能存在差异)
  • 访问绑定的站点域名/IP,测试php文件是否可以正常解析

常见问题排查

  • File not found报错:优先检查Nginx配置的root路径与容器内项目挂载路径是否完全一致,其次确认容器内php-fpm运行用户对项目目录有读取权限
  • 502 Bad Gateway报错:检查php-fpm容器是否正常运行,9000端口是否在宿主机正常监听,防火墙是否未放行本地环回对9000端口的访问
  • 权限不足报错:将宿主机项目目录的uid/gid调整为和容器内php-fpm运行用户的uid/gid一致即可解决

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:45:10