核心总结: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/
解决问题。
如果觉得《php-fpm linux 权限 nginx/php-fpm及网站目录的权限设置》对你有帮助,请点赞、收藏,并留下你的观点哦!