403 отказано в разрешении nginx, vagrant, centos
У меня проблемы с настройкой моей основной бродячей виртуальной машины для обслуживания некоторого контента. Nginx говорит, что у него нет разрешения на обслуживание индекса для папки моего проекта. Я попытался установить все разрешения на 777 для каталога проекта и изменить пользователя Nginx на vagrant.
Я не уверен, но из-за прочтения, очевидно, SELinux может вызывать проблемы, так как он включен на сервере, и в /var/log/audit/audit.log
как это:
type=AVC msg=audit(1471185070.388:854): avc: denied { getattr } for pid=4653 comm="nginx" path="/var/www/project/index.html" dev="0:37" ino=12161210 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:nfs_t:s0 tclass=file
Моя конфигурация nginx выглядит так:
server {
listen 80 default_server;
server_name knifesprinter.local;
index index.html;
location /{
root /var/www/project;
autoindex on;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
И все разрешения на /var/www/project
разрешены. Кто-нибудь знает, в чем здесь дело? Я настроил несколько серверов с Nginx раньше, но не на CentOS 7
1 ответ
Да, определенно проблема SELinux. Пожалуйста, не отключайте SELinux, установив принудительное значение 0. Вы можете разрешить доступ Nginx, используя audit2allow
, Это создаст для вас политику, которую вы можете применить, используя semodule
, Вам нужно будет запустить следующее как root
, Вы можете выполнить команды sudo, но у вас возникнет проблема с semodule
,
Во-первых, если ваша система не имеет audit2allow
:
yum install policycoreutils-python
Далее создайте политику:
grep httpd /var/log/audit/audit.log | audit2allow -M mypol
Затем примените политику:
semodule -i mypol.pp
Стоит отметить, что audit2allow
может дать больше доступа, чем необходимо. Если вы задумывались об этом, вы также можете использовать restorecon или chcon в некоторых случаях.
Надеюсь, это поможет.