刚刚把NGINX升级到1.10,由于以前用的是PPA的源,这次换成了NGINX的官方源,升级后配置文件也重新配置,结果总是有错误记录产生,主要的内容是:
primary script unknown while reading response header from upstream
参考网站的一些意见,更改:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
发现解决不了问题
这个问题主要是由于NGINX将所有PHP文件交由PHP-FPM来处理,如果PHP文件不存在,只是网址访问有带PHP结尾,都会交给PHP-FPM,PHP-FPM收到不存在的文件处理指令,就抛出了错误,结合PPA原来安装的配置文件,修改如下:
location ~ \.php$ {
# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;
# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
问题解决
之所以没有上传PPA原来的配置文件是由于PPA安装的与NGINX官方安装的文件位置和目录有点区别,官方的比较简单,这样也便于以后升级
其实在升级时,直接使用原有PPA安装的配置文件即可