首页IT科技前端请求500,接口到不了后端(【项目问题定位】前端请求不到资源报错ERR_CONTENT_LENGTH_MISMATCH的解决)

前端请求500,接口到不了后端(【项目问题定位】前端请求不到资源报错ERR_CONTENT_LENGTH_MISMATCH的解决)

时间2025-09-19 09:32:58分类IT科技浏览7133
导读:问题简述 前端页面加载资源时,出现ERR_CONTENT_LENGTH_MISMATCH的报错情况。...

问题简述

前端页面加载资源时                ,出现ERR_CONTENT_LENGTH_MISMATCH的报错情况                。

问题背景

从昨天下午开始                        ,我上测试环境测试就开始发现会偶发如下问题:

1.打开主页面速度很慢 2.客户查询界面样式丢失        ,像是没有请求到css文件 3.界面打开后            ,图表界面不显示任何图表

问其他小伙伴是否有遇到类似问题                        ,都说没有问题                        。

难道是我人品有问题?因为有其他事要忙            ,索性先不管了        。

今天早上        ,测试姐姐说他那边也遇到了我昨天说的问题            。那看来不是我人品问题                        。

问题定位

初始报错定位 打开开发者工具                        ,控制台报错是 require echarts.js error. 第一反应是缺失了这个第三方的echart            。

此时另一个小伙伴说他没有问题        。但我觉得可能是他本地有缓存的缘故                ,让他清下缓存再看看                        。清完后果然问题复现了                。

然后先去看了下页面引入echarts.js的地方

去服务器上查看    ,echarts.js并没有缺失    。就很奇怪!

好像是网络问题 又猜想难道                        ,是因为引入的不是压缩的JS                    ,文件太大,而网络不好                    ,导致加载资源失败?

为了验证我的猜想                        ,我将代码改成了引入echarts.min.js

清缓存重新进入测试环境    ,发现ok了                        。看来的确是因为echarts.js过大导致加载失败?

但是之前一直是ok的                    。。再说了除了这个问题                ,第一个问题和第二个问题还是会出现                    。 ERR_CONTENT_LENGTH_MISMATCH 200 是什么原因? 当我再次清除缓存刷新界面时                        ,第一个主页面始终打不开的问题又出现了                        。此时去查看控制台报错如下:

ERR_CONTENT_LENGTH_MISMATCH 200

这个报错百度了一下        ,原因有很多            ,比如磁盘满了                、Nginx的问题等等    。 原来是Nginx报错了

于是先问了大家最近是否有对环境nginx做变更?

了解到的确昨天修改了Nginx的配置文件                        ,所以取了一下Nginx的error.log,如下:

日志的报错提示很明显            ,Permission denied        ,Nginx在访问临时目录/usr/local/nginx/proxy_temp下文件时没有权限导致访问失败                。 为何没有权限?

先查看下该临时目录的所有者,是nobody                        ,而Ngnix的使用者是zoms

所以先试着使用chown命令修改所有者为zoms -R zoms:zoms ./proxy_temp

然后重启                ,重启后还是报Permission denied                        。重新查看权限    ,居然又变回了nobody nobody的原因

为何修改权限并重启后                        ,所有者又回变成nobody?

找到了一个大佬的解释:

虽然我们并没有nginx -t,但是给了我一点启发        。

我们是用root用户进来并修改配置文件的                    ,然后用root重启的,然而root并不是Ngnix的所有者                    ,所以重启后就强行修改了临时目录的权限!

问题解决

此时我们先停掉Ngnix                        ,并用Ngnix的所有者zoms进入    ,修改临时目录权限为zoms,然后再用zooms重启Ngnix            。

重启好后                ,再进入测试环境                        ,这时候就很快了        ,问题1,2,3都没有再出现了!

原因总结

所以根本原因是            ,Nginx的所有者是zooms,但是昨天用root用户去修改配置并重启了                        ,重启后导致/usr/local/nginx/proxy_temp 的所有者变为了nobody                        。

这时候Nginx在尝试访问/usr/local/nginx/proxy_temp下文件时            ,因为没有权限        ,导致了请求失败                        ,进而导致了前端不能正确访问资源的问题ERR_CONTENT_LENGTH_MISMATCH

至于nginx为何要访问临时目录而不是直接去主机上加载                ,原因是访问的资源过大的话    ,Nginx会优先从缓存加载            。

知识点

1.Nginx访问资源时                        ,如果资源过大                    ,会优先从缓存目录加载        。

2.非Nginx所有者 重启Ngnix后会强制将临时目录所有者修改为nobody                        。所以一定要用Ngnix所有者去重启Ngnix!

3.对于使用负载均衡的项目,如何定位访问不到资源的问题处于Ngnix?

可以绕过Ngnix                    ,直接访问目标主机上的资源                        ,如果能快速访问到    ,那就说明服务器没问题                ,只能是因为Ngnix的某些问题导致访问失败了                。进而可以查看Ngnix的error.log                        ,进一步明确原因    。
声明:本站所有文章        ,如无特殊说明或标注            ,均为本站原创发布                        。任何个人或组织                        ,在未征得本站同意时            ,禁止复制                        、盗用        、采集            、发布本站内容到任何网站                        、书籍等各类媒体平台                    。如若本站内容侵犯了原著者的合法权益        ,可联系我们进行处理。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
seo网站优化软件(SEO优化:让您的网站在搜索引擎中脱颖而出)