项目场景:
生产需要淘汰老旧设备,准备云迁移,测试环境将所有服务迁移到新环境后,需要测试,旧环境前置服务器使用的是apache,新环境使用nginx
问题描述:
手机后台在内网,手机人脸识别时候返回500错误,查看手机后台日志,没有任何日志。
原因分析:
请求没到手机后台,查看nginx下错误日志error .log
下面展示一些 内联代码片
。
反向日志 proxy_reverse.access.log
0.0.0.0 - - [17/Sep/2021:09:57:46 +0800] "POST /easyxxxUAT/xxxx/xxxx/queryFacePicVerify HTTP/1.1" 500 177 "-" "iPhone10,3(iOS/13.7) Uninview(Uninview/1.0.0) Weex/0.26.0 1125x2436"
错误日志 error.log
2021/09/17 09:57:44 [crit] 18908#0: *18831 open() "/app/nginx/xxxx/client_body_temp/0000000073" failed (13: Permission denied), client: 0.0.0.0, server: , request: "POST /xxxx/xxx/xxxx/queryFacePicVerify HTTP/1.1", host: "0.0.0.0:0"
看到其他从手机前台发来的请求都正常返回,了解到这个请求是发送图片,查阅相关博客,了解到nginx 的client_max_body_size上传文件默认是1M。
上传的文件会缓存到临时文件“/dev/shm/nginx_temp/client_body/0000000037”中;临时文件的空间不足;实际上,上传的文件会首先保存到缓冲区中,client_body_buffer_size可以配置缓冲区的大小,只有当文件超过缓冲区的大小才会缓存到临时文件中
并且上面报错是 Permission denied
解决方案:
#设置上传文件的最大值client_max_body_size 500m;
#设置临时文件存放路径
client_body_temp_path /export/data/temp/;
重启服务
参考
https://blog.csdn.net/weixin_36247139/article/details/112400155