今天部署了一个 http 服务器,使用了 nginx, 不是非常熟悉,按照网上一些文章顺利将 nginx 安装完毕,想增加一个 location 来重定向项目路径上的php代码,按照一些配置说明,增加下述配置即可:
location /G1 {
alias /data/xxxxxx.G1/Server/;
index index.html index.html;
}
但是发现 /G1 目录下的 index.html 能正常访问,但是该路径下的 test.php 出现 404 错误码,翻了一些资料得知,应该被下述规则成功匹配:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}
这个是 nginx 的默认配置,在根目录下/ 的php文件访问时没问题的,但是在/G1下就无法访问其php文件,主要原因时被上述规则匹配,而该规则只能匹配根目录/下的php文件,所以如果将php文件部署到 /G1 下,则出现 404 找不到的错误,查找了很多资料,终于找到正确的配置:
location /G1 {
alias /data/xxxxxx.G1/Server/;
index index.html index.html;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
}
}
是需要在 /G1 下增加一个子的 location 去匹配 php 文件,而且还必须 增加 fastcgi_param,
这个也许是一个非常简单的问题,对于熟悉 nginx的运维老司机,但由于不熟悉 nginx 的小白来说,写下这篇文章记录下,痛苦的解决问题过程,也希望能够帮助到一些遇到同样问题的朋友。