nginx proxy upstream 优化

proxy / upstream 的 cache 和 buffer

 参考:https://blog.csdn.net/dengjiexian123/article/details/53386586

 

配置示例:

http  {
    proxy_cache_path  /data/nginx_cache/  levels=1:2  keys_zone=my_zone:10m  inactive=300s  max_size=5g;

    server  {
        proxy_buffering               on;
        proxy_buffer_size             4k;
        proxy_buffers                 2   4k;
        proxy_busy_buffers_size       4k;
        proxy_temp_path               /tmp/nginx_proxy_tmp  1  2;
        proxy_max_tmp_file_size       20m;
        proxy_temp_file_write_size    8k;

        location /   {
             proxy_cache    my_zone;
         }
    }
}

 

 

proxy_buffering  on;

说明:on 时,web的数据写入buffer;off 时,proxy_buffers,proxy_busy_buffers_size 失效

原理:

请求过程 :当客户端  -->  代理  --> web 

响应过程:web  -->  代理(web数据会写入 buffer,当buffer被写满,则数据写入temp_file中)  -->  客户端

 

proxy_buffer_size  4k;

说明:设置 特殊的 buffer 大小。

原理:

响应过程:web  -->  代理(获取web的第一部分的响应数据 【 header 】保存到该 buffer 中 ,如果设置太小会出现 502,是因为这部分的 buffer 不够存储 header 信息)  -->  客户端

 

proxy_buffers  8  4k;

说明: 8 表示 buffer 的个数,每个buffer 的容量为 4K

原理:

响应过程:web  -->  代理(web的数据存入 buffer【 buffer个数 × buffer 大小 】)

 

proxy_busy_buffer_size  16k;

说明:buffer 的容量大小

原理:

响应过程:web  -->  代理 (该 buffer 的数据是传给客户端的 )  --> 客户端

 

proxy_temp_path  1 2

语法:  proxy_temp_path path [ level1 | level2 | level3 ] 用来定义proxy临时 文件存在的目录及层次。

示例:proxy_temp_path  /Application/nginx/proxy_temp 1 2;  # 其中 /Application/nginx/proxy_temp为临时文件所在,在该目录下,1 表示在层级1目录下创建的目录名称为数字(0-9),2表示层级 2 的目录为2个数字(00-99) 

 

proxy_max_temp_file_size  100m;

说明:临时文件的总大小

 

proxy_temp_file_write_size  16k;

说明:同时写入临时文件的数量总大小。

 

proxy_cache 

语法:proxy_cahe   zone|off

原理:

响应过程:web  -->  代理 (根据预设的规则将曾经获取的 web 数据缓存起来,当客户端请求时,直接将缓存的数据返回。) --> 客户端

 

proxy_cache_bypass  $cookie_nocache  $arg_nocache  $arg_comment;

说明:什么情况下的请求不读取cache,而是直接从后端的服务器上获取资源。$cookie_nocache  $arg_nocache  $arg_comment; 这些变量值只要任何一个变为0或不为空时,则响应的数据从后端的web上获取。

 

proxy_no_cache

说明:什么情况下不缓存。

实例:proxy_no_cache  $cookie_nocache  $arg_nocache$arg_comment;  # 这些变量值只要任何一个变为0或不为空时,不缓存数据。

 

proxy_cache_key

设置cache key。一般不用设置

 

proxy_cache_path

语法:proxy_cache_path   path   [levels=levels]  key_zone=name:size  [inactive=time]  [max_size=size]

说明:path             设置数据存放的路径。

          leves            设置目录层级,如levels=1:2 ,表示有两级目录,第一个目录取md5倒数第一个值,第二个目录取md5值的第2和第3个值

          keys_zone   设置内存zone的名字和大小

          inactive        设置硬盘上缓存的数据在该时间内没有被访问过,就会删除。默认 10s

          max_size     设置:硬盘上最多可以缓存多少数据,当到达该数值,则删除最少访问的数据。

实例:proxy_cache_path  /data/nginx_cache/  levels=1:2  keys_zone=my_zone:10m  inactive=300s  max_size=5g

 

转载于:https://www.cnblogs.com/BoNuo/articles/10281847.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值