这个问题的大多数答案是,设置fastcgi_param SCRIPT_FILENAME并且它会工作(斜体格式化被打破?!).
我已经设置了这个变量(正确),但它仍然显示错误而不是404页面,因为问题的根源在这里:
location ~ \.PHP${
fastcgi_split_path_info ^(.+\.PHP)(/.+)$;
fastcgi_pass unix:/var/run/PHP5-fpm.sock;
fastcgi_index index.PHP;
include fastcgi_params;
}
一个不存在的路径传递给PHP5-fpm,这将返回打印错误,该错误在日志中如下所示:
FastCGI sent in stderr:
"Unable to open primary script: ... (No such file or directory)"
while reading response header from upstream
因此,在行fastcgi_pass之前必须有一个条件来检查文件是否真的存在,或者,如果fpm工作者返回“找不到文件”,则引导Nginx返回404页面.
我怎样才能做到这一点?
最佳答案