问题现象
系统报NetWork Error错误。
问题分析
通过F12查看系统,发现有Failed to load resource的错误。
通过NetWork发现这个请求发生异常,资源为4.1MB,Nginx默认限制文件上传大小为:1MB,以为是client_max_body_size未设置导致。
排查Nginx配置文件后发现,Nginx配置了相关client_max_body_size参数。
查看Npart配置发现项目配置了多个Nginx
4个Nginx都已经配置成功并且error.log无相关报错。重新reload后发现报错依旧。
开发反馈无相关Nginx,客户也没有购买负载均衡的设备。
通过IP+端口的形式,绕过Nginx看是否系统会异常,如果正常则判断问题发生在Nginx上,但客户做了限制无法通过这个形式访系统。
问题陷入僵局??
发现客户通过域名访问系统。但仔细排查了相关的4个Nginx发现缺没有绑定域名,于是断定肯定有相关的负载均衡设备或者组件绑定了域名。
排查相关文档发现,客户还有2个Nginx做反向代理的入口。
梳理了架构,如图总共有6个Nginx,套了2层Nginx
排查主代理Nginx
在error.log中发现大量报错日志Permission denied:13报错,在读取proxy_temp下的文件无相关权限。
1)、相关文件夹授权有问题。
2)、Nginx的主进程与子进程非同一用户导致的。
首先给/data/nginx/proxy_temp授权 chown -R root:root,reload后发现文件夹所属主、组变为非同一用户,排查Nginx的主进程为root用户,子进程为nginx用户,这就是为什么文件夹所属主、组变为不一致的原因。
解决方案
修改配置文件nginx.conf,启动用户调整为root,reload nginx后问题解决。