学海无涯
go,go,go

nginx反向代理缓存配置

反向代理缓存配置
proxy_cache_path /var/cache/nginx/proxy_cache 表示缓存文件存放的路径,该路径是预先就要创建好的levels=1:1:1 设置在相对于path指定目录的第几级hash目录中缓存数据,levels=1,表示一级hash目录,levels=1:2,表示两级hash目录,目录的名称是基于请求URL通过哈希算法得到的
keys_zone=proxycache:20M 缓存的名字和大小
inactive=120s超过120s被经常访问的缓存就是活动的,超过120秒还是没人访问就是非活动的会把他删除
max_size=1g;设置硬盘中缓存数据的大小限制,最大缓存空间

完整配置在nginx.conf的http模块进行配置
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2:2 keys_zone=proxycache:20M inactive=120s max_size=1g;

在配置文件进行配置
proxy_cache proxycache;调用缓存的名字
proxy_cache_key $request_uri;对uri进行哈希运算得到哈希值做为文件名
proxy_cache_valid 200 302 301 1h;得到200/302/301的状态码缓存1小时
proxy_cache_valid any 1m;其它的资源缓存一分钟
proxy_connect_timeout 300;后端服务器连接的超时时间_发起握手等候响应超时时间后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_read_timeout 300;连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
proxy_send_timeout 300;后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
首先,这些参数都是针对每一个http request ,不是全局的

proxy_buffer_size 4k;
设置缓冲区的大小为size,nginx从被代理的服务器读取响应时,使用该缓冲区保存响应的开始部分
这部分通常包含着一个小小的响应头。该缓冲区大小默认等于proxy_buffers指令设置的一块缓冲区的大小,但它也可以被设置得更小。

proxy_buffers 4 32k;
设置用于读取应答(来自被代理服务器)的缓冲区数目和大小,为每个连接设置缓冲区的数量是number参数,
每块缓冲区的大小是size参数。这些缓冲区用于保存从被代理的服务器读取的响应。每块缓冲区默认等于一个内存页的大小。这个值默认是4K还是8K,取决于平台。

proxy_busy_buffers_size 64k;
当开启缓冲响应的功能以后,在没有读到全部响应的情况下,写缓冲到达一定大小时,nginx一定会向客户端发送响应,直到缓冲小于此值。
这条指令用来设置此值。 同时,剩余的缓冲区可以用于接收响应,如果需要,一部分内容将缓冲到临时文件。
该大小默认是proxy_buffer_size和proxy_buffers指令设置单块缓冲大小的两倍

proxy_temp_file_write_size 64k;
在开启缓冲后端服务器响应到临时文件的功能后,设置nginx每次写数据到临时文件的size(大小)限制。
size的默认值是proxy_buffer_size指令和proxy_buffers指令定义的每块缓冲区大小的两倍而临时文件最大容量由proxy_max_temp_file_size指令设置。

proxy_max_temp_file_size 1024m;
打开响应缓冲以后,如果整个响应不能存放在proxy_buffer_size和proxy_buffers指令设置的缓冲区内,部分响应可以存放在临时文件中。 这条指令可以设置临时文件的最大容量。
而每次写入临时文件的数据量则由proxy_temp_file_write_size指令定义。
将此值设置为0将禁止响应写入临时文件

proxy_buffering on;
代理的时候,开启或关闭缓冲后端服务器的响应。
当开启缓冲时,nginx尽可能快地从被代理的服务器接收响应,再将它存入proxy_buffer_size和proxy_buffers指令设置的缓冲区中。
如果响应无法整个纳入内存,那么其中一部分将存入磁盘上的临时文件。proxy_max_temp_file_size和proxy_temp_file_write_size指令可以控制临时文件的写入。
当关闭缓冲时,收到响应后,nginx立即将其同步传给客户端。nginx不会尝试从被代理的服务器读取整个请求,而是将proxy_buffer_size指令设定的大小作为一次读取的最大长度。
响应头“X-Accel-Buffering”传递“yes”或“no”可以动态地开启或关闭代理的缓冲功能。 这个能力可以通过proxy_ignore_headers指令关闭。

反向代理缓存配置对每一条缓存生效
在反向代理服务器nginx.conf的http模块进行配置
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2:2 keys_zone=proxycache:20M inactive=120s max_size=1g;
proxy_cache proxycache;
proxy_cache_key $request_uri;
proxy_cache_valid 200 302 301 1h;
proxy_cache_valid any 1m;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_max_temp_file_size 1024m;
proxy_buffering on;
add_header X-Via $server_addr;
add_header X-Cache $upstream_cache_status;
add_header X-Accel $server_name;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;

赞(0) 打赏
未经允许不得转载:YYQ运维技术博客_运维的工作学习之路 » nginx反向代理缓存配置
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

运维devops

联系我们关于本博客

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏