403 permission denied nginx, vagrant, centos

403 permission denied nginx, vagrant, centos

我在设置我的基本 vagrant VM 来提供某些内容时遇到问题。 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

是的,绝对是 SELinux 问题。请不要通过将 enforce 设置为 0 来禁用 SELinux。您可以使用 audit2allow 允许 Nginx 访问。这将为您生成一个策略,您可以使用 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 or chcon

希望对您有所帮助。