今天在docker容器中部署nginx + php环境,在分别安装好nginx、php容器后,发现在浏览器中访问php文件时,返回File not found
.
,并且状态码为404,但是返回的内容并不是 nginx
配置的404页面。
在网上查询了一下,有的说需要将 server
下面的 location
中的
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
改为:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
然而改为以后重启 nginx 并没有什么效果,仍然返回 File not found
.
。
最后在一篇文件 docker配置nginx+php各种坑 中发现,说是高版本 nginx 不再支持 $document_root
,需要把 $document_root
改为 php 容器内web文件的路径,当把 nginx 配置文件的 $document_root 改成 php 容器中 web文件 的绝对路径后重启 nginx,php文件居然真的可以正常访问了。
容器中安装的 nginx 容器版本为 1.19.2,在 nginx 的配置文件 fastcgi_params
中,存在变量 $document_root
,所以还不太清楚是否真的高版本 nginx 不再支持 $document_root
变量还是需要在nginx 容器的配置文件中写死 php 容器中web文件的绝对路径。