web-dev-qa-db-ja.com

nginxとnfsでアクセスが拒否されました

RHEL7マシンを2台持っています。

Nginxとphp-fpmをインストールし、nfsマウントをセットアップしました。 nfsマウントへの読み取り/書き込みは問題なく実行でき、読み取り/書き込みが可能な別のアプリケーションサーバー(Apache Geronimo)があります。

Nginxをインストールすると、同じuidとgidを使用してNFSファイルサーバー上に作成したnginxユーザーがセットアップされます。

Nginxユーザーを使用して、nfsクライアントマウント上のファイルを一覧表示できます。ただし、nfsからnginxを使用して静的htmlファイルまたは動的phpファイルを提供しようとすると、アクセス許可エラーが発生します。

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

さらに、同じ権限で/ usr/depot/testsの下にフォルダーを作成しました(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の再起動を無効にしたところ、修正されました。ここで問題となるのは、nginxがリモートサーバーにアクセスできるようにSELinuxを構成する方法です。

1
Ruggs

RHEL 7では、Apacheに適用されるのと同じSELinuxポリシーがnginxにも適用されます。したがって、同じブール値を使用できます。

httpd_use_nfs                  (off  ,  off)  Allow httpd to use nfs

WebサーバーがNFSを使用できるように、正しいブール値を設定します。

setsebool -P httpd_use_nfs 1
5
Michael Hampton

これはこの問題に対するGoogleでの最初の結果であるため、解決策を追加したいと思いました。

私の場合、SELinuxが無効になっていたので、そうではありませんでした。私の問題は、php-fpmがApacheとして実行されていたことでした。したがって、CentOS 7 Webサーバー(OPに従ってファイルサーバー上にnginxユーザーを作成したと仮定)では、/ etc/php-fpm.d/www.confでユーザーとグループをnginxに変更し、php-fpmを再起動します。

2
Mark Masic