系统已经上线运行了一段时间,突然有用户反馈app上传图片上传不了。通过检测试发现传小的文件没有问题,文件大一点就不行。
把现象和问题说了一下,现在说一下我们的部署情况,我们使用nginx作为反向代理到tomcat上。实际提供服务的都是tomcat。
上传文件上传不了的第一反应是代码有问题,上传一个略微大一点的文件,tomcat日志居然没有打印任何问题。那问题要前移了,是nginx的问题,跟踪客户端代码发现是服务器报错500,那查看下nginx错误好了,打开nginx的错误日志,配置nginx.conf:error_log logs/error.log;
在测试nginx配置文件时提示,日志目录没有权限,好吧,给目录授权。启动成功,上传文件,还是报错,不过这次错误和上次不一样了变成了“unauthorized(401)”,明显还是没有权限么,打开错误日志查看,发现nginx的缓存目录没有权限,查看目录的权限是nginx,再查看nginx的配置文件中配置的用户是www,明显是用户不同没有操作权限造成的,修改nginx的启动用户或者修改目录的权限,重启nginx,上传文件好使了。好一次乌龙呀!
重新梳理了一下思路,nginx本身的请求体默认是走内存的,当请求体超过设定的大小要走磁盘的,这次是因为用户的权限不够导致文件写入不了磁盘。
在配置nginx过程中用到以下操作命令:
nginx -t #测试配置文件 nginx -s reload #重启nginx
linux中把文件的权限给用户
chown nginx:nginx .