参照https://blog.csdn/mr_ooo/article/details/81068369

https://blog.csdn/shi111222/article/details/105793179/

https://blog.csdn/zhuimeng_by/article/details/108266513

https://stackoverflow/questions/25993826/err-content-length-mismatch-on-nginx-and-proxy-on-chrome-when-loading-large-file

最常见的有三种可能

1.磁盘满了

2.nginx缓存文件读取时没有权限

3.chrome缓存大小的问题

其他可以去Stack Overflow    https://stackoverflow/questions/25993826/err-content-length-mismatch-on-nginx-and-proxy-on-chrome-when-loading-large-file

一 磁盘满了

df -h

 


发现这个路径下已经使用了100%,进入根目录查询占用多的文件夹

cd /
du -sh *
  • 1
  • 2


发现usr文件夹占用最多,进入usr文件夹,再次执行du -sh *查询usr文件夹下占用大的文件夹,以此类推


日志占用过大,删除一些日志就可以了。

 

 

二  访问权限

在单独打开hearder中css,js的网络地址是能打开的,所以排除了最简单的地址错误。前端项目是由nginx代理的,所以可以查看nginx的日志,看看有无线索。

进入${NGINX_HOME}\logs,查看error.log,得到如下信息:

<span style="color:#000000"><code>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, 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"
</code></span>

 

线索很明显,在请求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,查看文件权限。

<span style="color:#000000"><code>ll
</code></span>

 

可以看到4文件夹的所有者是svenchen

查看现在nginx的使用者,发现是root

那么,导致没有权限的原因也查清了,就是文件的所有者和访问者不是同一用户。

 

解决方案

  1. 改变文件夹所有者,把文件夹及文件夹下所有文件的所有者改为当前nginx的使用者,chown -R root:root ./*
  2. 增加权限,给其他用户增加可读权限。
  3. 修改nginx配置文件,声明使用者(推荐)

这样声明之后,保存的缓存文件的使用者就会是root了。

 

 

三 chrome缓存大小

原因是Nginx代理之后会有相应的代理缓存区,缓存区默认只有几十K,某些版本的nginx默认设置中没有相关处理,导致部分文件代理是会出现加载不全的现象,其实不仅仅是JS文件。只是因为框架的JS文件略大,所以经常出现类似问题。

在http里面加入三行配置

proxy_buffer_size 128k;
proxy_buffers   32 128k;
proxy_busy_buffers_size 128k;

nginx下的conf文件:

最后进入nginx下的sbin,执行./nginx -s reload重启nginx即可。


重启nginx,./nginx -s reload,问题解决。

更多推荐

浏览器 net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content) 报错解决方案