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

Docker挂载volume后Nginx未解析/var/www/html下index.php问题

问题根因
  • Nginx默认配置优先级问题:官方Nginx镜像默认的站点配置中,index指令的排序为index index.html index.htm;,index.html的优先级远高于index.php,只要目录下存在index.html就会优先返回该文件。你手动拷贝文件时大概率同步修改了容器内的Nginx配置调整了优先级,但是重新创建容器时使用的是原始镜像的默认配置,没有保留修改后的配置,所以挂载目录时就出现了优先返回html的问题。
  • PHP解析规则缺失:官方Nginx镜像默认没有配置PHP请求的转发规则,即使调整了index优先级,没有对应php-fpm的转发配置也无法解析PHP文件,会直接返回PHP文件下载或者报错。你手动拷贝文件功能正常,说明你之前修改过容器内的Nginx配置添加了PHP解析规则,但是重新run容器时没有持久化该配置,导致挂载目录时配置失效。
  • 挂载覆盖问题:你直接挂载本地目录到容器的/var/www/html路径,不会修改容器内的Nginx配置,之前手动修改的容器内配置没有被持久化,新启动的容器依然使用默认配置,这是只有挂载时才出现问题的核心原因。
解决步骤
  1. 本地准备自定义Nginx配置
    在本地创建配置文件(比如路径为~/docker-image/nginx/default.conf),内容参考如下:
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    root   /var/www/html;
    # 调整优先级,把index.php放在最前面
    index index.php index.html index.htm;

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

    # 新增PHP解析规则,如果你是用单独的php-fpm容器,把fastcgi_pass改成你的php容器名称:9000,比如php-fpm:9000
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

注意:如果你使用的是Nginx+PHP一体化镜像,确认PHP-FPM监听的地址和端口匹配即可;如果是分开部署的PHP容器,需要把Nginx容器和PHP容器加入同一个Docker网络,fastcgi_pass填写PHP容器的服务名加端口即可。

  1. 重新启动容器,挂载配置和代码目录
    先删除原有问题容器:
sudo docker rm -f game-nginx

使用新的参数启动容器,同时挂载代码目录和自定义配置:

sudo docker run --name game-nginx -p 80:80 \
-v ~/docker-image/html:/var/www/html \
-v ~/docker-image/nginx/default.conf:/etc/nginx/conf.d/default.conf \
-d nginx

如果遇到文件权限问题(挂载的文件属主是1000:1000,Nginx默认运行用户无权限读取),可以在启动命令中添加--user 1000:1000参数,或者修改本地挂载目录的权限为755。

  1. 验证配置生效
    启动后执行以下命令检查Nginx配置是否正确加载:
sudo docker exec game-nginx nginx -t

如果返回success说明配置正常,重载配置或者直接重启容器即可:

sudo docker exec game-nginx nginx -s reload

此时再访问localhost就会优先解析index.php文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:24:03