我试过:
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
目录的访问权限。