Q:浏览器打开控制台报错:net::ERR_CONTENT_LENGTH_MISMATCH 206

发布时间 2023-08-12 17:03:43作者: 三年三班王小朋

一、问题描述

F12查看浏览器的控制台,提示net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content) ,如下图,

HTTP状态码206表示“部分内容”(Partial Content),表示服务器成功处理了部分客户端的请求。通常情况下,这个状态码是在客户端通过HTTP Range头部请求部分资源时返回的。如果服务器不支持范围请求的话,下面几个原因可能会导致这个问题出现

二、可能原因

  1. 服务器的磁盘满了,导致应用不能正常使用。
  2. nginx缓存文件读取时没有权限(Permission denied)。
  3. nginx的代理缓存区太小。

三、问题解析及解决方案

1、 服务器的磁盘满了,导致应用不能正常使用

1df -h 命令查看磁盘的使用情况
 (2)进入根路径,使用 du -sh * 命令查看哪个文件夹占用多
 (3)发现usr文件夹占用最多,进入usr文件夹,再次执行 du -sh * 查询usr文件夹下占用大的文件夹,以此类推
 (4)最终查到占用空间最大的文件,根据自己的实际情况进行删除无用的文件

2、nginx缓存文件读取时没有权限(Permission denied)【我的是这个的问题,改了以后就好了!!!】

在单独打开hearder中css,js的网络地址是能打开的,所以排除了最简单的地址错误。前端项目是由nginx代理的,所以可以查看nginx的日志,进入${NGINX_HOME}\logs,查看error.log,得到如下信息:

 (13: Permission denied) while reading upstream。如下图

(1)proxy_temp文件夹是什么,做什么用的

Nginx通过代理缓存(proxy cache)提高了其反向代理服务器的性能。proxy cache是一种将反向代理服务器的响应缓存在本地磁盘上的技术,可以缓解上游服务器的压力并提高客户端的访问速度。

为了实现proxy cache功能,Nginx需要将代理服务器响应的数据写入本地磁盘上的临时文件。这些临时文件存储在proxy_temp文件夹中,以便于Nginx进行管理和维护。

proxy_temp文件夹中的临时文件由Nginx自动管理,当缓存不再需要时,Nginx会自动将其删除,以避免占用过多的磁盘空间。

(2)进入/usr/local/nginx/proxy_temp 文件夹,查看文件夹权限和nginx的用户

发现proxy_temp 文件夹的所有者是nobody用户,nginx是root用户

修改nginx配置文件,声明使用者

1、打开Nginx配置文件。默认情况下,Nginx配置文件位于/etc/nginx/nginx.conf,注释掉user  nobody;

其中,Nginx的用户名可以自定义。此处示例root用户启动nginx

#user nobody;
user root;

2、将nginx路径下所有文件所有者改成root用户(示例root用户)

chown -R root:root /usr/local/nginx

 

3、检查Nginx配置文件是否存在语法错误(nginx配置文件没问题,可跳过)。可以使用以下命令:

nginx -t

 

如果配置文件没有语法错误,将输出“nginx: configuration file /etc/nginx/nginx.conf test is successful”。

5、重启Nginx服务以使配置更改生效。可以使用以下命令:

sudo systemctl restart nginx

 

3、nginx的代理缓存区太小

在nginx.conf.js文件的http配置添加下面三行代码,然后保存重启nginx即可

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

具体解析:
(1)proxy_buffer_size: 这个指令设置单个代理缓冲区的大小。它用于指定Nginx在向客户端发送响应之前缓冲区中存储的最大字节数。默认情况下,这个值为4K。
例如,如果您将proxy_buffer_size设置为128k,当Nginx代理从上游服务器接收响应时,它将使用最大128K的缓冲区存储响应,然后将其发送到客户端。

(2)proxy_buffers: 这个指令设置代理缓冲区的数量和大小。代理缓冲区是一种用于存储从上游服务器接收到的响应的内存区域。proxy_buffers指令由两个参数组成:缓冲区数量和每个缓冲区的大小。默认情况下,Nginx使用8个缓冲区,每个缓冲区大小为4K。
例如,如果您将proxy_buffers设置为32 128k,Nginx将使用32个缓冲区,每个缓冲区大小为128K。

(3)proxy_busy_buffers_size: 这个指令设置代理缓冲区中可用于存储响应的最大字节数。当Nginx在向客户端发送响应时,它将从代理缓冲区中取出缓冲区,如果缓冲区大小小于proxy_busy_buffers_size,则Nginx将尝试从上游服务器获取更多的响应,并将其存储在另一个缓冲区中。
例如,如果您将proxy_busy_buffers_size设置为128k,当Nginx代理使用缓冲区向客户端发送响应时,它将从代理缓冲区中取出缓冲区,并且只有在缓冲区大小小于128K时,Nginx才会从上游服务器获取更多的响应。

需要注意的是,这些代理缓冲区配置项可以根据具体情况进行调整,以达到最佳的性能和资源利用率。