单个文件的Nginx 403错误,而其他人工作

时间:2017-07-07 12:17:07

标签: nginx uwsgi serving

我有一个简单的Flask / Nginx服务器和3个位于/opt/hosting/files的文件:

[adam@localhost]$ namei -om /opt/hosting/files
    f: /opt/hosting/files
     dr-xr-xr-x root  root  /
     drwxr-xr-x root  root  opt
     drwxr-xr-x root  root  hosting
     drwxr-xr-x nginx nginx files

files文件夹中,我有3个文件:两个图像和一个更大的zip文件:

[adam@localhost]$ ls -lh /opt/hosting/files/
total 424M
-rwx-----x. 1 nginx nginx  19K 03-06 01:29 file1.jpg
-rwx-----x. 1 nginx nginx  18M 03-06 03:34 file2.png
-rwxr-xr-x. 1 nginx nginx 406M 07-07 13:07 file3.zip

我正在提供这些文件,虽然前两个文件没有问题,但我通过www和使用wget得到了403 Forbidden的zip文件。我认为目录权限设置正确,因为其他两个文件都没问题。 Zip文件属性甚至更高,所以这不应该是一个问题。

我尝试将chown root:rootchown 777用于文件和文件夹,但无论如何都无法访问该文件。在进行更改后,我正在使用sudo systemctl restart uwsgi重新启动nginx。 SELinux显示Enforcing

这里有什么问题?

1 个答案:

答案 0 :(得分:2)

知道了。阅读comment by tinesoft here让我检查SELinux文件的上下文(是的,我正在运行CentOS,忘记提及),它是:

[adam@localhost]$ ls -lZ /opt/hosting/files
-rwx-----x. nginx nginx unconfined_u:object_r:httpd_sys_content_t:s0 file1.jpg
-rwx-----x. nginx nginx unconfined_u:object_r:httpd_sys_content_t:s0 file2.png
-rwxr-xr-x. nginx nginx unconfined_u:object_r:user_home_t:s0 file3.zip

然后,在SELinux documentation from RedHat之后,我设法使用

将SELinux上下文的类型从user_home_t更改为httpd_sys_content_t
sudo chcon -t httpd_sys_content_t file3.zip

就是这样。