首页 > 技术文章 > nginx由于权限导致大文件不能上传的问题

zzw-zyba 2019-08-02 19:09 原文

1、用了nginx代理后,应用上传文件时,发现小文件可上传,大文件上传不了,查nginx日志,发现有这么一句:client intended to send too large body

   在nginx.conf配置文件的server加上 client_max_body_size 1024m

  重启nginx,上传大文件,还是上传不了,但后台没有client intended to send too large body日志了。

  此时后台有日志如:2019/08/02 18:37:35 [crit] 437115#0: *34 open() "/usr/local/nginx/client_body_temp/0000000009" failed (13: Permission denied)。 而小文件可上传。

2、再次编辑nginx.conf文件,开头加上 user root;

#user nobody;
user root;
worker_processes 1;

3、再次重启nginx,大文件可以上传了。

4、问题分析:还没仔细分析。

   但想原因应可能是nginx没加user root之前,是以默认的nobody用户运行的,而用nginx上传文件时,大文件要先在某个目录缓存一下再转发给应用,但nobody用户权限太小,文件不能写入所致。而小文件不缓存,直接就转发到应用程序了。 下次有空再仔细分析一下。

推荐阅读