Назад | Перейти на главную страницу

В разрешении отказано с помощью nginx и nfs

У меня две машины RHEL 7.

Я установил nginx и php-fpm и настроил монтирование nfs. Я могу читать / писать на монтирование nfs без проблем, и у меня есть другой сервер приложений (Apache Geronimo), который может читать и писать на него.

Когда я установил nginx, он установил пользователя nginx, которого я создал на файловом сервере NFS с тем же идентификатором uid и gid.

Я могу перечислить файлы на монтировании клиента nfs, используя пользователя nginx. Однако, когда я пытался обслуживать статические html или динамические файлы php с помощью nginx из nfs, я получаю ошибку разрешения:

*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 с такими же разрешениями (просто не 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, и это исправило. Теперь вопрос в том, как мне настроить SELinux, чтобы nginx мог получить доступ к удаленному серверу.

В RHEL 7 те же политики SELinux, которые применяются к Apache, также применяются к nginx. Таким образом, вы можете использовать те же логические значения:

httpd_use_nfs                  (off  ,  off)  Allow httpd to use nfs

Установите правильное логическое значение, чтобы разрешить веб-серверу использовать NFS.

setsebool -P httpd_use_nfs 1

Поскольку это первый результат в Google для этой проблемы, я решил добавить свое решение.

В моем случае SELinux был отключен, так что это было не так. Моя проблема заключалась в том, что php-fpm работал как apache. Итак, на моих веб-серверах CentOS 7 (при условии, что вы создали пользователя nginx на файловом сервере в соответствии с OP) я меняю пользователя и группу на nginx в /etc/php-fpm.d/www.conf и перезапускаю php-fpm.