/var/lib/nginx/client_body/0000000011 与 node.js 失败(13:权限被拒绝)

/var/lib/nginx/client_body/0000000011 与 node.js 失败(13:权限被拒绝)

我使用node.jsNginx 作为在 Slackware 14.1 上运行的 Web 服务器。

我创建了一个上传文件的页面。在我的开发机器(类似 Debian)上,它运行良好,但在生产环境(Slackware 服务器)中,我遇到了以下错误/var/log/nginx/error.log

2015/10/09 15:08:44 [crit] 1231#0: *5 open() "/var/lib/nginx/client_body/0000000003" failed (13: Permission denied), client: 10.0.0.22, server: localhost, request: "POST /home/perfil_usuario/upload HTTP/1.1", host: "aluno.fio.edu.br", referrer: "http://aluno.fio.edu.br/home/perfil_usuario/upload"

并且 Nginx 返回一个500 Internal Server Error

我搜索并尝试了许多帖子中的修复方法,但错误仍然存​​在。

答案1

正如错误消息所示,这是一个权限问题。

这通常是由于 nginx 进程用户(www-data例如)没有对父目录之一的读取/执行访问权限造成的。

检查/var/lib/nginx/client_body/并确保每个目录级别的权限正确,以解决问题。

答案2

就我而言,问题在于 /var/lib/nginx 的所有权错误。nginx 写入的所有其他目录均归 www-data 所有,而 'nginx 目录归 root 所有。在这种情况下,最好的解决方案是更改目录所有权以匹配 nginx 写入的其他目录的所有权。

答案3

在我的情况下,/var/lib/nginx 的所有权设置为 www-data:adm,权限设置为 770

改变确实对我有用

  1. chown root:root /var/lib/nginx/
  2. chmod 0755 /var/lib/nginx

/var/lib/nginx/tmp 也不同,根据第 1 点和第 2 点更新了所有权和权限

并提到了 /var/lib/nginx/tmp 中的内容

drwx------. 2 www-data root 6 9月 29 23:37 uwsgi

drwx------. 2 www-data root 6 9月 29 23:37 scgi

drwx------. 2 www-data root 6 9月 29 23:37 fastcgi

drwx------. 10 www-data root 78 十月 20 12:17 代理

drwx------. 2 www-data root 6 十月 20 12:20 client_body

设置这些权限和所有权后,重新启动 nginx。您将不会看到权限被拒绝错误,并且 Nginx 不再给出 500 内部服务器错误,我看到了预期的结果。谢谢

相关内容