只是想帮助别人。是的,您只想使用 nginx 提供静态文件,并且 nginx.conf 中的所有内容都正确:
location /static {
autoindex on;
#root /root/downloads/boxes/;
alias /root/downloads/boxes/;
}
但是,最终你还是失败了。您从浏览器收到“403 禁止”...
----------------------------------------------------答案如下: ----------------------------------------------------
解决方案非常简单:
<小时 />方法 1:以“/root/downloads/boxes/”所有者的用户身份运行 nginx
在nginx.conf中:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
是的,在第一行“#user noboy;”中,删除“#”,并将“nobody”更改为您的Linux/OS X 中自己的用户名,即更改为“root”进行测试。重启nginx。
注意,你最好不要以root身份运行nginx!这里只是为了测试,这对黑客来说是危险的。
更多引用,请参见nginx (engine X) – What a Pain in the BUM! [13: Permission denied]
<小时 />方法 2:将“/root/downloads/boxes/”所有者更改为“www-data”或“nobody”
在终端中:
ps aux | grep nginx
获取运行nginx的用户名。应为'www-data'或'nobody',由nginx版本决定。然后在终端中点击(例如使用'www-data'):
chown -R www-data:www-data /root/downloads/boxes/
------------------------------------------更重要的事情是:---- --------------------------
这些父目录"/"、"/root"、"/root/downloads"应授予执行(x)权限到'www-data'或'nobody'。即
ls -al /root
chmod o+x /root
chmod o+x /root/downloads
更多引用,请参见Resolving "403 Forbidden" error和 Nginx 403 forbidden for all files
请您参考如下方法:
您应该授予 nginx 读取该文件的权限。这意味着您应该授予运行 nginx 进程的用户读取该文件的权限。
运行 nginx 进程的用户可以使用 nginx 配置中的 user
指令进行配置,通常位于 nginx.conf
顶部的某个位置:
user www-data
http://wiki.nginx.org/CoreModule#user
您提供给 user
的第二个参数是组,但如果您不指定它,它将使用与用户相同的参数,因此在我的示例中,用户和组都是www-data
。
现在您想要使用 nginx 提供服务的文件应该具有正确的权限。 Nginx 应该有读取这些文件的权限。您可以向组 www-data
授予对文件的读取权限,如下所示:
chown :www-data my-file.html
http://linux.die.net/man/1/chown
使用chown
,您可以更改文件的用户和组所有者。在此命令中,我仅更改组,如果您也想更改用户,则可以在冒号之前指定用户名,例如 chown www-data:www-data my-file.html
。但是正确设置组权限应该足以让 nginx 能够读取该文件。