项目背景:项目使用微服务的架构进行开发,前端进行文件上传时,首先经过nginx反向代理到对应的上传文件模块的服务器,再由该服务器将图片上传到FastDFS。

点击上传文件后出现500首先就去检查了自己的程序,发现没有日志打出来,所以应该是在nginx进行反向代理的过程中出错。仔细观察发现Response Headers中的Server是nginx,此时第一反应是认为nginx对文件大小进行了限制。所以对nginx的http进行了如下配置:

client_max_body_size 200m;

重启nginx,还是出现了此错误,于是去查看nginx的日志文件,error.log(mac在 /usr/local/var/log/nginx目录下)

发现:

open() "/usr/local/var/run/nginx/client_body_temp/0000000010" failed (13: Permission denied)

提示没有权限,此时去修改该文件的权限

sudo chmod -R 777 client_body_temp

然后重启nginx,图片上传正常

查了一下资料:client_body_temp的作用就是将客户端上传的超过nginx缓冲区大小的文件存放在其临时目录,所以上传一些小的文件(比如10k以下,这个数字我没查过?),就不会有问题。

发表评论