nginx 缓存大小的含义

举报
liuzhen007 发表于 2021/11/07 21:23:52 2021/11/07
【摘要】 目录问题解决proxy_buffer_sizeproxy_buffersproxy_busy_buffers_size结尾 问题上一篇文章,我们已经介绍了解决服务器 net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content) 问题的方法,是通过修改 nginx 代理服务的缓存大小,具体的修改方法如下:proxy_buffer_size 128...

目录

  • 问题
  • 解决
    • proxy_buffer_size
    • proxy_buffers
    • proxy_busy_buffers_size
  • 结尾

问题

上一篇文章,我们已经介绍了解决服务器 net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content) 问题的方法,是通过修改 nginx 代理服务的缓存大小,具体的修改方法如下:

proxy_buffer_size 128k;

proxy_buffers 32 128k;

proxy_busy_buffers_size 128k;

很多人不禁要问,这三个配置项,它们具体都有哪些功能呢?我们今天就来揭秘一下。

解决

接下来,我们就分别分析一下。

proxy_buffer_size

proxy_buffer_size 配置项的语法如下:

proxy_buffer_size size

proxy_buffer_size 的默认值是 4k 或者 8k, 它的作用是指定 nginx 读缓存的大小。Nginx 使用 proxy_buffer_size 的大小申请相应 read_buf,即指定 upstream header 的最大长度,如果响应头超过了这个长度,nginx 会报 upstream sent too big header 的错误,然后客户端收到 502 的错误码。我们将该值调整为 128k,保证足够的读缓存大小。

proxy_buffers

proxy_buffers 配置项的语法如下:

proxy_buffers 数量 size

proxy_buffers 的默认值是 256 8k,它的作用是设置存储被代理服务器响应的 body 所占用的 buffer 个数以及每个 buffer 大小。默认值的意思是开辟了 256 个长度为 8k 大小的 read_buf 用来存储 body,但是并不是连接建立时就开辟 256 个对应的缓存,而是在当前 buffer 不够存储响应的 body 大小时才会申请一个新的 buffer,最多申请 256 个 buffer。修改后的方案,总的缓存 buffer 大小较默认值增加了一倍。

proxy_busy_buffers_size

proxy_busy_buffers_size 配置项的语法如下:

proxy_busy_buffer_size  size

proxy_busy_buffer_size 没有单独的默认值,它并不是独立的空间,其实它是 proxy_buffers 和 proxy_buffer_size 的一部分。Nginx 会在没有完全读完后端的响应数据时,就开始向客户端传送数据,所以它会划分出一部分 busy 状态的 buffer 来专门向客户端传送数据(建议为 proxy_buffers 中单个缓冲区的2倍),然后它继续从后端取数据。proxy_busy_buffer_size 参数用来设置处于 busy 状态的 buffer 大小的参数。如果完整数据大小小于 busy_buffer 大小,当数据传输完成后,马上传给客户端;如果完整数据大小不小于 busy_buffer 大小,则装满 busy_buffer 后,马上传给客户端。

结尾

好了,今天关于 nginx 的三个缓存配置项(proxy_buffer_size、proxy_buffers、proxy_busy_buffers_size)的作用就介绍完了。相信大家即使没有完全理解,也多少也所收获。

作者简介:大家好,我是 liuzhen007,是一位音视频技术爱好者,同时也是CSDN博客专家、华为云社区云享专家、签约作者,欢迎关注我分享更多干货!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。