核心总结:nginx、php-fpm 进程所使用的用户,不能是网站文件所有者。 凡是违背这个原则,则不符合最小权限原则。

最佳实践:
nginx 以nobody运行
修改nginx.conf
user nobody
重启nginx服务器

php-fpm 也以nobody运行
编辑文件php-fpm.conf
user nobody
group nobody
重启php-fpm

网站目录设置为可读即可,某些需要写入权限的目录设置为777

nginx静态资源 403 forbidden
有可能是selinux的原因

临时关闭selinux
setenforce 0

永久关闭selinux
vi /etc/selinux/config
SELINUX=disabled

重启服务器

PS:
访问出现异常,chrome控制台报错ERR_INCOMPLETE_CHUNKED_ENCODING

查看日志 /var/log/nginx/error.log

open() "/var/cache/nginx/fastcgi_temp/4/09/0000000094" failed (13: Permission denied) while reading upstream,

原因是:
nginx会使用fastcgi_buffer_size指定的大小的缓冲区用于缓存fastcgi流的内容。当大小超出此大小时会继续用fastcgi_buffers指定的数量和大小申请缓冲区。如果依然超出此大小,会将多出的内容写入临时文件。上面日志中反应的就是nginx无权写入临时文件。

于是将/var/cache/nginx/用户也设为nobody

chown nobody:nobody -R /var/cache/nginx/

解决问题。