设为首页 收藏本站
查看: 1598|回复: 0

[经验分享] Nginx cache 学习总结

[复制链接]

尚未签到

发表于 2018-11-12 07:36:36 | 显示全部楼层 |阅读模式
Nginx cache 学习总结
一、nginx cache的基本指令
1.1 proxy_cache
  syntax:
  proxy_cache zone| off;
  default:
  proxy_cache off;
  context:
  http, server, location
  定义一块共享内存区域用来进行缓存。相同名称的缓存区域可以在多个地方使用。Off参数关闭从前一个级别配置中继承下来的缓存设置
1.2 proxy_cache_bypass
  yntax:
  proxy_cache_bypass string…;
  default:
  —
  context:
  http, server, location
  定义一个条件,在这个条件成立后将不会从缓存中获取数据。至少有一个字符串参数不为空,并且是不等于“0”,则响应不会从缓存中获取。
  proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
  proxy_cache_bypass $http_pragma    $http_authorization;
  Can be used along with the proxy_no_cache directive.
1.3 proxy_cache_key
  syntax:
  proxy_cache_key string;
  default:
  proxy_cache_key $scheme$proxy_host$request_uri;
  context:
  http, server, location
  给缓存数据定义一个键,例如
  proxy_cache_key “$host$request_uri $cookie_user”;
  默认情况下,该指令的值的字符串
  proxy_cache_key $scheme$proxy_host$uri$is_args$args;
1.4 proxy_cache_lock
  syntax:
  proxy_cache_lock on | off;
  default:
  proxy_cache_lock off;
  context:
  http, server, location
  This directive appeared in version 1.1.12.
  当指令被指定时,根据 proxy_cache_key指令确定的若干个或得出相同响应元素若干个请求仅仅有一个能被传递给后端的代理服务器(最终传递给应用服务器)去生成响应内容,生成后响应内容添加到cache中, 其他请求从cache中获取数据。其他请求将等待cache中有内容出现或者等待超时为止。
1.5 proxy_cache_lock_timeout
  syntax:
  proxy_cache_lock_timeout time;
  default:
  proxy_cache_lock_timeout 5s;
  context:
  http, server, location
  This directive appeared in version 1.1.12.
  为proxy_cache_lock指令设置一个超时时间
1.6 proxy_cache_min_uses
  syntax:
  proxy_cache_min_uses number;
  default:
  proxy_cache_min_uses 1;
  context:
  http, server, location
  设置请求发生多少次后,请求(响应内容)被缓存
1.7 proxy_cache_path
  syntax:
  proxy_cache_path path[levels=levels] keys_zone=name:size [inactive=time]
  [max_size=size] [loader_files=number] [loader_sleep=time]
  [loader_threshold=time];
  default:
  —
  context:
  http
  设置高速缓存的路径和其他参数。缓存数据存储在文件中。在高速缓存中缓存内容文件名以及对应的key都用MD5函数处理。Levels参数确定缓存文件的层级关系。例如下面的配置文件
  proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
  缓存后的文件名将如下:
  / data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
  一个缓存的响应,首先被写入到一个临时文件,然后重命名一个文件。从版本0.8.9临时文件和缓存可以放在不同的文件系统,但在这种情况下,一个文件复制在两个文件系统中发生,而不是廉价的重命名操作。因此建议,对于任何给定的位置,缓存目录和proxy_temp_path指令所设定的临时文件都放在同一个文件系统中。
  此外,所有活跃的数据信息包括其key都存储在一个共享内存区域中,这个区域的名称及大小等keys_zone指令的参数进行配置。被缓存在内存中的数据在一定时间没有被访问后将变成不活跃,这些数据将被从内存中移除无论数据是否还是有效,不活跃时间由inative 参数设置。默认情况下inactive是10分钟。
  “高速缓存管理器”进程将监控max_size参数设置最大缓存大小,超过此大小时,它消除了最近最少使用的数据。
  一分钟后开始的指定“cache loader”进程被激活,他将加载以前缓存在文件系统中的缓存数据到内存中。一个加载包括在若干个迭代过程。在一个迭代过程中加载文件数量小于loader_files 参数指定的数量(默认值100).除此以外迭代时间小于loader_threshold限制的值,默认值200毫秒。在两个迭代中间有个短暂的暂停(加载的暂停,nginx其他工作没有暂停),这个时间被loader_sleep参数所控制,默认值50毫秒。
1.8 proxy_cache_use_stale
  syntax:
  proxy_cache_use_stale error | timeout | invalid_header | updating | http_500
  | http_502 | http_503 | http_504 | http_404 | off …;
  default:
  proxy_cache_use_stale off;
  context:
  http, server, location
  如果nginx同代理服务器工作过程中发生一个错误,nginx可能使用一个陈旧的被缓存的数据。这个指令决定在那种情况下使用这个功能。这个指令的参数会同proxy_next_upstream指令的参数相匹配。
  此外,如果目前正在更新,更新参数允许使用过时的缓存的响应。这可以最大限度地减少更新缓存数据时,代理服务器的访问次数。
  为了尽量减少当填充一个新缓存元素时访问代理服务器次数过多的问题,可以使用proxy_cache_lock指令,来缓解。
1.9 proxy_cache_valid
  syntax:
  proxy_cache_valid [code…] time;
  default:
  —
  context:
  http, server, location
  设置不同响应代码的缓存时间,例如如下指令:
  proxy_cache_valid 200 302   10m;
  proxy_cache_valid 404       1m;
  设置缓存的响应代码为200和302时间为10分钟,代码为404的响应缓存时间为1分钟。
  如果只指定缓存时间
  proxy_cache_valid 5m;
  然后只有200,301和302响应被缓存。
  此外,它可以被指定缓存任何响应通过使用any参数:
  proxy_cache_valid 200 302 10m;
  proxy_cache_valid 301      1h;
  proxy_cache_valid any      1m;
  缓存的参数也能通过响应头直接设置。这个设置具有更高优先级比通过缓存指令设置的缓存时间。“X-ACCEL-Expires”头字段以秒为单位设置响应的缓存时间。0禁止缓存响应。
  如果一个值以前缀@开始,将针对响应设置一个绝对过期时间(自1970年1月1日0时到达过期时间的绝对秒数)的缓存。若是响应头中没有 “X-Accel-Expires” 字段,则缓存参数可以通过“Expires” or “Cache-Control”字段进行设置。若是一个响应头包括“Set-Cookie” 字段,则这样的响应将不被缓存。这样的一个或者多个响应头字段的处理可以通过proxy_ignore_headers 指令进行禁止。
1.10 proxy_no_cache
  syntax:
  proxy_no_cache string…;
  default:
  —
  context:
  http, server, location
  定义条件下的反应将不会被保存到高速缓存。如果至少有一个值的字符串参数不为空,不等于“0”,那么响应将不会被保存:
  proxy_no_cache$ cookie_nocache$ arg_nocache$ arg_comment;
  proxy_no_cache$ http_pragma HTTP_AUTHORIZATION;
  可用于沿的proxy_cache_bypass指令。
  定义一些条件,当响应满足这些条件时将不被缓存起来。在条件字符串中至少有一个条件不为空或者0,符合这样条件的响应才不会被缓存。
  proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;
  proxy_no_cache $http_pragma    $http_authorization;
  文章来源:http://blog.csdn.net/hero00e/article/details/52858196


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-633864-1-1.html 上篇帖子: tomcat+nginx部署站点 下篇帖子: 编译安装nginx-11624315
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表