nginx 缓存大小的含义

简介: 上一篇文章,我们已经介绍了解决服务器 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_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博客专家、华为云享专家、InfoQ 签约作者,欢迎关注我分享更多干货!


目录
相关文章
|
7月前
|
存储 缓存 Java
Openresty(lua+nginx)-Guava-Redis做多级缓存
Openresty(lua+nginx)-Guava-Redis做多级缓存
80 1
|
4月前
|
缓存 应用服务中间件 nginx
成功解决 Nginx更新静态资源无效 ,Nginx静态资源更新不及时,Nginx清除缓存
这篇文章讨论了在使用Nginx进行动静分离时遇到的静态资源更新不及时的问题。问题描述了在服务器上更新静态资源后,访问页面时页面没有显示更新的情况。文章提供了解决这个问题的方法,即清除浏览器缓存,并提供了相关参考文章链接。此外,还展示了问题复现的步骤和正常情况的预期结果。
成功解决 Nginx更新静态资源无效 ,Nginx静态资源更新不及时,Nginx清除缓存
|
2月前
|
存储 缓存 监控
|
2月前
|
存储 缓存 负载均衡
Nginx代理缓存机制
【10月更文挑战第2天】
88 4
|
2月前
|
存储 缓存 NoSQL
Nginx缓存
Nginx缓存
30 2
|
4月前
|
缓存 应用服务中间件 nginx
[nginx]proxy_cache缓存系统
[nginx]proxy_cache缓存系统
|
5月前
|
存储 缓存 前端开发
(三)Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化...想要的这都有!
早期的业务都是基于单体节点部署,由于前期访问流量不大,因此单体结构也可满足需求,但随着业务增长,流量也越来越大,那么最终单台服务器受到的访问压力也会逐步增高。时间一长,单台服务器性能无法跟上业务增长,就会造成线上频繁宕机的现象发生,最终导致系统瘫痪无法继续处理用户的请求。
165 1
|
5月前
|
监控 应用服务中间件 nginx
高并发架构设计三大利器:缓存、限流和降级问题之Nginx的并发连接数计数的问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之Nginx的并发连接数计数的问题如何解决
|
5月前
|
应用服务中间件 nginx 缓存
高并发架构设计三大利器:缓存、限流和降级问题之Nginx作为前置网关进行限流问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之Nginx作为前置网关进行限流问题如何解决
|
7月前
|
缓存 算法 应用服务中间件
nginx 反向代理 与缓存功能
nginx 反向代理 与缓存功能