我使用node.js
Nginx 作为在 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
改变确实对我有用
- chown root:root /var/lib/nginx/
- 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 内部服务器错误,我看到了预期的结果。谢谢