Nginx和php-fpm用户权限说明

Nginx权限

我们知道,Nginx本身不能解析PHP的语法,所以Nginx对于静态文件(如HTML等)会直接解析返回结果,但是对于PHP的文件,Nginx会转交给PHP的解释器php-fpm进行处理,此时则需要php-fpm用户对文件具有有读权限或者读写权限。处理完后再返回响应给客户端浏览器。

因此,我们代码目录下需要统一Nginx和php的服务所需权限。

最好的办法就是统一归类到一个新的用户组里面,通过给该用户组分配Nginx和php运行必要的权限,来实现对web应用的权限目录管理。

通常情况下,许多团队都会把这个用户组取名www,由www用户来统一管理代码目录权限。

我们可以看到Nginx的配置文件nginix.conf里面划分的运行权限就是配置到了www用户下,因此Nginx的子进程也是由www用户执行,可以通过ps aux | grep nginx来查看

php-fpm权限

同样的,php的运行方式也是由主进程root运行,在子进程池(pool)里面配置由www用户执行,具体配置在php根目录下的etc\php-fpm.conf下,添加两行:

1
2
user = www
group = www

即可,同样用ps aux | grep php可以查看进程使用的用户身份

总结

一般情况下,nginx运行用户、php-fpm运行用户和web的根目录的所有者和所属组,应该保持一致。

  • 上传目录 644
  • runtime目录 744