net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content) 报错

服务器 0

一、问题描述

最近现场实施人员反馈有个功能不能正常使用,F12查看浏览器的控制台,提示net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content)的错误,

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

二、问题原因

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

三、问题解析及解决方案

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

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

地方-查看磁盘使用情况在这里插入图片描述查找
进入根路径,使用 du -sh * 命令查看哪个文件夹占用多在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、nginx缓存文件读取时没有权限(Permission denied)

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

[crit] 275197#0: *1543 open() “/usr/local/nginx/proxy_temp/4/30/0000000304” failed (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。

2、在配置文件中找到“worker_processes”行,该行设置了工作进程的数量。在此行下面添加以下内容:

 user yourusername;

其中,yourusername是您要用于运行Nginx的用户名。

3、保存并关闭文件。

4、检查Nginx配置文件是否存在语法错误。可以使用以下命令:

   nginx -t

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

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

sudo systemctl restart nginx

现在,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才会从上游服务器获取更多的响应。

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

也许您对下面的内容还感兴趣: