控制台报错:__GET https ://192.168.10.60/audit/js/echarts/3.8.5/echarts.min.js net::ERR_CONTENT_LENGTH_MISMATCH 200
本地可以正常加载,测试环境就会报错,把静态资源换成较小的可以加载,百度上都说是nginx缓存文件权限不够造成的,实际上没有用nginx代理。
我也遇到了这个问题,本地的springboot工程,十几兆的视频可以直接访问,但100多兆的视频就加载不出来了,博主解决了吗?救救孩子!!
查找问题
在单独打开hearder中css,js的网络地址是能打开的,所以排除了最简单的地址错误。前端项目是由nginx代理的,所以可以查看nginx的日志,看看有无线索。
进入${NGINX_HOME}\logs,查看error.log,得到如下信息:
2018/07/13 14:22:49 [crit] 275197#0: *1543 open() "/usr/local/nginx/proxy_temp/4/30/0000000304" failed (13: Permission denied) while reading upstream, client: 192.168.75.11, server: xxxx.xxxx.com, request: "GET /model-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:8081"
1
线索很明显,在请求vendor.7e49e6e8578e1e242c55.js的时候,nginx在尝试访问/usr/local/nginx/proxy_temp/4/30/0000000304,结果因为没有权限,导致了请求失败。
那么,为什么nginx要访问proxy_temp文件夹呢,因为proxy_temp是nginx的缓存文件夹,我的css和js文件过大了,所以nginx一般会从缓存里面去拿,而不是每次都去原地址直接加载。
尝试解决
进入/usr/local/nginx/proxy_temp,查看文件权限。
ll
1
图(1)
可以看到4文件夹的所有者是svenchen。
查看现在nginx的使用者,发现是root。
图(2)
那么,导致没有权限的原因也查清了,就是文件的所有者和访问者不是同一用户。
解决方案
改变文件夹所有者,把文件夹及文件夹下所有文件的所有者改为当前nginx的使用者,chown -R root.root./*。
增加权限,给其他用户增加可读权限。
修改nginx配置文件,声明使用者(推荐)。
图(3)
这样声明之后,保存的缓存文件的使用者就会是root了。
作者:Mr_OOO
来源:CSDN
原文:https://blog.csdn.net/Mr_OOO/article/details/81068369
版权声明:本文为博主原创文章,转载请附上博文链接!