首页 > 系统相关 >六、Nginx缓冲区

六、Nginx缓冲区

时间:2023-09-10 22:01:48浏览次数:46  
标签:temp buffer Nginx proxy 缓冲区 size

先来思考一个问题,接入Nginx的项目一般请求流程为:“客户端→Nginx→服务端”,在这个过程中存在两个连接:“客户端→NginxNginx→服务端”,那么两个不同的连接速度不一致,就会影响用户的体验(比如浏览器的加载速度跟不上服务端的响应速度)。

其实也就类似电脑的内存跟不上CPU速度,所以对于用户造成的体验感极差,因此在CPU设计时都会加入三级高速缓冲区,用于缓解CPU和内存速率不一致的矛盾。在Nginx也同样存在缓冲区的机制,主要目的就在于:「「用来解决两个连接之间速度不匹配造成的问题」」 ,有了缓冲后,Nginx代理可暂存后端的响应,然后按需供给数据给客户端。先来看看一些关于缓冲区的配置项:

  • proxy_buffering:是否启用缓冲机制,默认为on关闭状态。
  • client_body_buffer_size:设置缓冲客户端请求数据的内存大小。
  • proxy_buffers:为每个请求/连接设置缓冲区的数量和大小,默认4 4k/8k
  • proxy_buffer_size:设置用于存储响应头的缓冲区大小。
  • proxy_busy_buffers_size:在后端数据没有完全接收完成时,Nginx可以将busy状态的缓冲返回给客户端,该参数用来设置busy状态的buffer具体有多大,默认为proxy_buffer_size*2
  • proxy_temp_path:当内存缓冲区存满时,可以将数据临时存放到磁盘,该参数是设置存储缓冲数据的目录。
  • path是临时目录的路径。
  • 语法:proxy_temp_path path;  path是临时目录的路径
  • proxy_temp_file_write_size:设置每次写数据到临时文件的大小限制。
  • proxy_max_temp_file_size:设置临时的缓冲目录中允许存储的最大容量。
  • 非缓冲参数项:
  • proxy_connect_timeout:设置与后端服务器建立连接时的超时时间。

  • proxy_read_timeout:设置从后端服务器读取响应数据的超时时间。

  • proxy_send_timeout:设置向后端服务器传输请求数据的超时时间。

具体的nginx.conf配置如下:

http{  
    proxy_connect_timeout 10;  
    proxy_read_timeout 120;  
    proxy_send_timeout 10;  
    proxy_buffering on;  
    client_body_buffer_size 512k;  
    proxy_buffers 4 64k;  
    proxy_buffer_size 16k;  
    proxy_busy_buffers_size 128k;  
    proxy_temp_file_write_size 128k;  
    proxy_temp_path /soft/nginx/temp_buffer;  
}

上述的缓冲区参数,是基于每个请求分配的空间,而并不是所有请求的共享空间。当然,具体的参数值还需要根据业务去决定,要综合考虑机器的内存以及每个请求的平均数据大小。推荐:Java面试题

最后提一嘴:使用缓冲也可以减少即时传输带来的带宽消耗。

标签:temp,buffer,Nginx,proxy,缓冲区,size
From: https://blog.51cto.com/yangshaoping/7428475

相关文章

  • 七、Nginx缓存机制
    对于性能优化而言,缓存是一种能够大幅度提升性能的方案,因此几乎可以在各处都能看见缓存,如客户端缓存、代理缓存、服务器缓存等等,Nginx的缓存则属于代理缓存的一种。对于整个系统而言,加入缓存带来的优势额外明显:减少了再次向后端或文件服务器请求资源的带宽消耗。降低了下游服务器的......
  • nginx本地缓存
           ......
  • 使用Nginx作为Java后端的反向代理
    什么是Nginx?Nginx是一款高性能、轻量级的开源Web服务器和反向代理服务器。它广泛用于提供Web服务、负载均衡、反向代理、HTTP缓存以及安全性增强等功能。Nginx的架构允许它处理大量并发连接,同时保持低的内存消耗。为什么使用Nginx?使用Nginx作为Java后端的反向代理有许多好处,包括:性......
  • Nginx实战教程
    B站最易懂的Nginx实战教程,全程干货无废话!只需90分钟就能学会!https://www.bilibili.com/video/BV19V4y1i7ar?p=1&vd_source=f94762f40dbb72123cdfef2c22447c7a......
  • NGINX开机自动启动
      借助WindowsServiceWrapper工具,将Nginx转换为Windows服务,在服务中心配置自启动,从而在开机时windows自行启动Nginx服务。1、自启动工具下载 工具下载地址:https://github.com/winsw/winsw/releases 2、自启动工具安装  下载后将该工具放入Nginx的安装目录下,并且将其......
  • 25 生产者消费者问题:利用缓冲区:管程法
    packageThreadDemo;//生产者消费者问题:利用缓冲区:管程法//wait()令自己等待,notify()唤醒别的线程publicclassTest25_Producer_Consumer_1{publicstaticvoidmain(String[]args){SynBuffersynBuffer=newSynBuffer();newConsumer(synB......
  • Nginx源码部署教程
    1、系统版本Centos7.92、下载Nginx源码包wget-chttp://nginx.org/download/nginx-版本号.tar.gz-P/usr/src/#存放的路径3、解压下载的文件tarxvf文件名称 cd到加压出来的路径4、执行./configure文件cd/usr/src/nginx文件夹下面运行 ./configure5、关闭防火墙systemctl......
  • nginx安装
    1下载https://nginx.org/en/download.html2安装所需环境1.1gcc安装安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,则需要安装:yuminstall-ygcc1.2PCREpcre-devel安装PCRE(PerlCompatibleRegularExpressions)是一个Perl库,包括pe......
  • docker 安装nginx,并配置域名ssl证书(超详细)
    1、直接安装最新的nginxdockerpullnginx2、由于后期需要方便配置与管理nginx,需要把nginx容器内的文件夹进行挂载到宿主机中,所以此处需要进行到自己心仪的盘中创建文件夹(本次说明在/home)mkdirnginx&&cd$_&&mkdir-p{ssl,config,logs}ssl放域名对应证书config放nginx配置文......
  • 利用时间戳切割Nginx日志
    worker_processes2;events{worker_connections1024;}http{includemime.types;default_typeapplication/octet-stream;log_formataka_logs'{"@timestamp":"$time_iso8601",''&q......