我在一台服务器上配置了两个nginx虚拟主机,两个虚拟主机分别对应不同的域名和代码路径,但是一个域名可以正常访问,另一个域名不能正常访问,总是出现404错误,将两个域名同时指向能够正常访问的域名对应的目录,则可以访问。由此可以判断是PHP代码目录权限的问题。查看代码目录果真有一层目录被设置成了700,所以不管下层目录权限怎样,域名始终没法正常访问。

总结一下Nginx出现404报错,并提示如下信息

error] 11550#0: *1691 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.1.13, server: abc.example.com,

可以根据以下方法进行排错:

1)要访问的文件是否存在

2)要访问文件的相关权限是否正确,是不是有权限是700或600这样的权限设置错误。

3)检查Nginx的配置文件关于PHP转发的设置

    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

    这里的$document_root 要特别注意一下。