写点什么

nginx 缓存大小的含义

用户头像
liuzhen007
关注
发布于: 8 小时前
nginx 缓存大小的含义

目录


  • 问题

  • 解决

  • 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 博客专家、华为云社区云享专家、签约作者,欢迎关注我分享更多干货!

发布于: 8 小时前阅读数: 5
用户头像

liuzhen007

关注

敲代码,搞开发。 2021.05.01 加入

本人深耕音视频技术,走全栈路线,前后端通吃,兼顾各端与流媒体服务器。 博客主页地址:https://liuzhen.blog.csdn.net 微信公众号:玩转音视频 欢迎交流学习!

评论

发布
暂无评论
nginx 缓存大小的含义