`
85977328
  • 浏览: 1904126 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nginx系列(十)nginx缓存代理proxy_cacahe和CDN实现的原理

 
阅读更多
概述
今天早上在上班的地铁上,看了一篇文章,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
2
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics