如何通过 nginx 提供非根静态文件?

如何通过 nginx 提供非根静态文件?

我试过:

user nginx;
...
...
       location / {
           root /home/tango/www/html;
       }

只会得到 403 禁止错误。这/home/tango/www/html/index.html是由生成的tango,所以我认为我不能把它/var/www/html/写在需要 root 权限的地方。

错误日志确认了权限错误:

2020/07/28 11:50:12 [error] 122769#0: *533 open() "/home/tango/www/html/index.html" failed (13: Permission denied), client: XXX.YYY.ZZZ.AAA, server: , request: "GET /diagcte HTTP/1.1", host: "my.org"

然而,ls -la /home/tango/www/html/index.html显示:

-rw-r--r--. 1 tango posixusers 212 Jul 28 11:33 /home/tb571/www/html/index.html

所以nginx用户应该具有读取权限。

无论如何,您能帮助通过提供非根静态文件nginx吗?

答案1

nginx该文件试图访问的父目录也必须具有适当的权限,而不仅仅是文件本身。通常,/home其他用户无法访问目录。

您需要执行类似的事情chgrp -R nginx /home/tango ; chmod g+rx /home/tango,但请在您自己的设置中考虑这样做的安全隐患。

根据您的发行版,SELinux 也可能拒绝权限。尝试audit2allow -a查看这是否会导致问题。

但是,最好将根移动到其他位置并tango在那里授予写访问权限,而不是授予nginx/home目录的访问权限。

相关内容