/var/lib/nginx/client_body/0000000011 failed (13: Permission denied) with node.js

I'm using node.js with Nginx as web server running on Slackware 14.1.

I created a page that uploads a file. In my development machine (Debian like) it works fine, but in production (Slackware server) I get this error in /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"

And Nginx returns a 500 Internal Server Error.

I searched and try the fixes from many posts but the error continues.


Solution 1:

As the error message says, this is a Permissions issue.

This is usually caused by nginx process user (www-data for example) not have read/execute access to one of the parent directories.

Check through /var/lib/nginx/client_body/ and make sure the permission is correct at each directory level to solve the problem.

Solution 2:

In my case the issue was that the ownership of /var/lib/nginx was wrong. All other directories that nginx writes to were owned by www-data, whereas the 'nginx dir was owned by root. In this case the best solution is to change the directory ownership to match that of the other dirs that nginx writes to.