问题描述:
访问应用发现页面加载不出 查看前端页面加载css,和js文件的时候,经常出现ERR_CONTENT_LENGTH_MISMATCH的报错情况。
查找问题:
排查思路----->查看nginx错误日志---跟具具体报错排查问题
因为我们的静态资源都是通过nginx代理到后端访问的,所以先登录nginx查看nginx日志,发现nginx日志报权限问题
2023/07/13 15:22:49 [crit] 30630#0: *1543 open() "/date/nginx/proxy_temp/4/30/0000000304" failed (13: Permission denied) while reading upstream, client: 192.168.12.11, server: localhost, request: "GET /ce-web/static/js/vendor.7e49e6e8578e1e242c55.js.map HTTP/1.1", upstream: "http://xxx.xxx.xxx:8080/model-web/static/js/vendor.7e49e6e8578e1e242c55.js", host: "xxx.xxx.xxx.xxx:80"
重点看这里open() "/date/nginx/proxy_temp/4/30/0000000304" failed (13: Permission denied)
这表明我们nginx在访问是出现权限问题
尝试解决:
于是我们进入nginx目录下查看发现:
[root@node2 nginx]# ll
总用量 36
drwx------ 2 nobody wan 4096 7月 8 09:56 client_body_temp
drwxr-xr-x 2 wan wan 4096 7月 25 09:33 conf
drwx------ 2 nobody wan 4096 7月 8 09:56 fastcgi_temp
drwxr-xr-x 2 wan wan 4096 7月 25 11:16 html
drwxr-xr-x 2 wan wan 4096 7月 24 09:54 logs
drwx------ 2 nobody wan 4096 7月 8 09:56 proxy_temp
drwxr-xr-x 2 wan wan 4096 7月 8 09:53 sbin
drwx------ 2 nobody wan 4096 7月 8 09:56 scgi_temp
drwx------ 2 nobody wan 4096 7月 8 09:56 uwsgi_temp
因为我们的nginx使用wan这个用户起的 但是这里面client_body_temp 、fastcgi_temp、proxy_temp、uwsgi_temp、scgi_temp 这些文件的所有者不是wan 导致了nginx访问这些包时没有权限
还有一种可能就是你的nginx使用普通用户起的 但是有一天你用root修改了nginx 随手就重启了nginx 这样也会导致nginx出现上述问题
在查看nginx的进程
发现nginx的使用者是root
[root@node2 sbin]# ps -ef | grep nginx
root 1463 1 0 11:09 ? 00:00:00 nginx: master process ./nginx
nobody 1464 1463 0 11:09 ? 00:00:00 nginx: worker process
root 1466 1262 0 11:09 pts/0 00:00:00 grep --color=auto nginx
那么 导致没有权限的原因也查清了,就是文件的所有者和访问者不是同一用户 导致权限问题
解决方法:
1、提倡修改nginx安装目录的权限:chown -R wan :wan /date/
因为我们的nginx使用wan这个普通用户起的 所以需要修改nginx目录下的权限
修改权限之后进入nginx sbin目录下重载nginx
重载之前先检测一下nginx配置文件语法:(这是一个良好的习惯)
./nginx -t #检测nginx配置文件是否有误
./nginx -s reload #重载配置问题件
问题解决
其实修改nginx目录权限之前不用重载nginx也能恢复 为什么我要重载是因为我之前有进入nginx主配置文件,为了防止我不小心修改到了nginx配置文件,所以我选择了重载nginx配置文件,如果你不小心修改了配置文件你又不重启的话,很可能下一个人来修改nginx配置文件并重启时会出现意想不到的问题,所以提倡只要自己修改了配置文件都重启一下。