8

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.

bentek
  • 2,235
  • 1
  • 15
  • 23
BrTkCa
  • 183
  • 1
  • 1
  • 6

2 Answers2

11

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.

Federico Sierra
  • 3,589
  • 1
  • 20
  • 26
  • 1
    Had this same error appear after a patch changed directory permissions. The error only occurred when a user tried to upload a file > 20k – shonky linux user Feb 18 '20 at 23:16
  • 4
    @shonkylinuxuser That is the correct behavior, in case the request body is larger than the buffer (`client_body_buffer_size` default 8k|16k), the whole body or only its part is written to a temporary file (`client_body_temp_path`). – Federico Sierra Feb 18 '20 at 23:26
  • Everyone copied this answer, but no one wrote what the correct permissions should be.. – tpaksu Nov 27 '20 at 10:50
1

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.

ericg
  • 11
  • 1