概述
今天早上在上班的地铁上,看了一篇文章,proxy_cache可以支持nginx的缓存。所以兴致来了,就弄了一下。微信的文章在后面已经给出。
在反向代理服务器上,配置代理缓存,默认开启get和head请求的缓存,如果需要缓存post,还需要特殊处理。因此这个时候我们需要面向缓存编程,有些地方要特殊处理。最终的配置文件可以查看附件。
proxy_cache基础配置
http节点添加
#levels设置目录层次,第一层目录只有一个字符,是由levels=1:2设置,总共二层目录,子目录名字由二个字符组成。如果启用了反向代理的gzip压缩,则本地磁盘中存储的文件是解压后的文件。
#keys_zone设置缓存名字和共享内存大小
#inactive在指定时间内没人访问则被删除在这里是1天
#max_size最大缓存空间
proxy_cache_path /opt/nginx/nginx-1.9.4/proxy_cache levels=1:2 keys_zone=content:20m inactive=1d max_size=100m;
server节点添加
location ^~ / {
proxy_pass http://192.168.56.1:8080/;
proxy_cache content; #根keys_zone后的内容对应
proxy_cache_valid 200 304 301 302 10d; #哪些状态缓存多长时间
#proxy_cache_valid any 1d; #其他的缓存多长时间,或者不缓存
#proxy_cache_methods GET; # 默认是get和head
proxy_cache_key $host:$server_port$uri$is_args$args; #通过key来hash,定义KEY的值
#[host]192.168.56.2 [server_port]8080 [uri]/cache_ehcache-2.10.0_web/expire [is_args] [args]-
proxy_cache_min_uses 3; #只要统一个url,不管间隔多久,总次数访问到达3次,就开始缓存。
proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; # 如果任何一个参数值不为空,或者不等于0,nginx就不会查找缓存,直接进行代理转发
}
缓存生效后如下图
可以进到具体目录里,VI查看文件,正式我们页面看到的内容。
另外,缓存的时间单位,有s,m,d 相信大家能自己猜出来。
proxy_cache_min_uses这个参数,是指同一个url,不管时间间隔多长,是否在一个缓存周期外,只要总次数到达proxy_cache_min_uses次数,就会触发缓存功能。后续缓存失效以后,只要访问一次,又会缓存。
proxy_cache_bypass是绕开缓存,其中可以通过cookie,和url的get参数进行控制。取得cookie参数的前缀是$cookie_,取得url参数的前缀是$arg_,其他的杜泽可以自行领略。
注意:当在运行时,删除proxy_cache_path缓存目录时,则永远无法缓存
高级用法(像CDN一样)
更新时间:2015-10-28
所有的缓存,都遵循源策略,就像CDN一样。Cache-Control以下4个属性,出现任意一个,则不缓存。
no-cache, no-store, max-age=0, s-maxage=0
其中max-age和s-maxage大于0的时候,则根据源站策略进行缓存,proxy_cache_valid的缓存设置时间失效。
当 max-age=3, s-maxage=5,同时配置的时候,nginx缓存时间以s-maxage时间为主。
遵循源和proxy_cache_path里面的时间有冲突的时候,策略如下:
当proxy_cache_path时间大于遵循源的时候,遵循源时间到期,请求时候,重新设置并覆盖磁盘上的文件;
当proxy_cache_path时间小于遵循源的时候,则proxy_cache_path到期的时候,重新到源站获取数据,遵循源策略失效。
更新时间:2015-11-11
缓存清理模块ngx_cache_purge
http://phl.iteye.com/blog/2256356
更新时间:2015-11-14
proxy_cache_revalidate on的参数设置,代理缓存的更新验证。
http://phl.iteye.com/blog/2256857
参考文章
http://mp.weixin.qq.com/s?__biz=MzA4Nzc4MjI4MQ==&mid=210913347&idx=1&sn=6991673fe0cd6be3559b192832b3ebc3&scene=1&srcid=10136jldL7Gm2jn05O73BfJi#rd
http://blog.51yip.com/apachenginx/1018.html
http://blog.chenlb.com/2010/04/nginx-proxy-cache.html
- 大小: 9.4 KB
分享到:
相关推荐
该项目是一款基于freeRTOS操作系统和STM32F103x微控制器的手机远程控制浴室温度系统设计源码,共包含1087个文件,包括580个C语言源文件、269个头文件、45个汇编源文件、36个数据文件、36个目标文件、35个编译规则文件、28个包含文件、27个文本文件、6个源文件、3个归档文件。此系统通过手机远程实现对浴室温度的有效控制,适用于智能浴室环境管理。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。