我无法设置我的基本流浪汉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上设置
答案 0 :(得分:2)
叶,肯定是SELinux的问题。请不要通过将强制设置为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。
我希望这会有所帮助。