权限被nginx和nfs拒绝

我有两台RHEL 7机器。

我已经安装了nginx和php-fpm并设置了nfs挂载。 我可以读取/写入nfs mount而不会出现问题,而且我有另一个能够读取写入的应用程序服务器(Apache Geronimo)。

当我安装nginx时,它设置了一个nginx用户,我使用相同的uid和gid在NFS文件服务器上创build了这个用户。

我能够使用nginx用户列出nfs客户端上的文件。 然而,当我试图从nfs服务使用nginx的静态HTML或dynamicPHP文件我得到一个权限错误:

*5 stat() "/usr/depot/repository/test.php" failed (13: Permission denied) *5 open() "/usr/depot/repository/test.html" failed (13: Permission denied) 

另外我在/ usr / depot / testing下创build了具有相同权限的文件夹(只是不是nfs),工作得很好。

这是客户端的安装信息。

 xxx.xxx.xxx.xxx:/mnt/repository on /usr/depot/repository type nfs4 (rw,nosuid,nodev,noexec,relatime,vers=4.0,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=xxx.xxx.xxx.xxx,local_lock=none,addr=xxx.xxx.xxx.xxx) 

我看不出这个设置有什么问题,所以我不知道为什么nginx无法从nfs共享中读取这些文件。

更新

好的,我只是禁用SELinux重新启动,并修复它。 现在的问题是如何configurationSELinux,使nginx可以访问远程服务器。

在RHEL 7中,适用于Apache的SELinux策略也适用于nginx。 所以你可以使用相同的布尔值:

 httpd_use_nfs (off , off) Allow httpd to use nfs 

设置正确的布尔值以允许Web服务器使用NFS。

 setsebool -P httpd_use_nfs 1 

由于这是Google针对此问题的第一个结果,因此我想添加我的解决scheme。

在我的情况下,SELinux被禁用,所以不是这样。 我的问题是,PHP的FPM运行为Apache。 所以在我的CentOS 7networking服务器上(假设你根据OP在文件服务器上创build了一个nginx用户),我将用户和组更改为/etc/php-fpm.d/www.conf中的nginx,并重新启动了php-fpm。