利用nginx proxy_cache进行网站缓存托底配置

原创 2016年05月18日 16:48:22

众所周知nginx proxy_cache可以对请求的response进行缓存,起到类似CDN的作用,甚至有比CDN提供更多的功能,还可以用来缓存托底数据,当后台tomcat挂掉的时候,nginx直接将缓存中的托底数据返回给用户。

直接贴上详细配置

upstream tomcat_localhost {

//注意此处超时时间不要设置太长
server 127.0.0.1:8080 weight=10 max_fails=1 fail_timeout=1s;
}

1.nginx缓存空间配置,该配置定义在nginx配置文件的server上方即可

#proxy_cache_path : 代理缓存的缓存文件路径,/export/Data/huishou.jd.local 该目录一定要提前创建好,否则配置文件检测会失败,并且该目录不能删除,删除后缓存消失

# levels=1:2  nginx会在上述配置的缓存文件路径下再创建两级目录,第一级目录命名为一个字符,第二级目录命名为2个字符

#keys_zone=my_cache:100m max_size=100m 定义缓存的名称和缓存大小 ,缓存的名称会在下面的location中使用,缓存大小可以结合自己服务器内存和系统需要缓存的内容大小进行考虑设置

# inactive=1d 缓存文件的有效时间,缓存到达该设置的时间后无论是否在使用都会从缓存路径下移除,然后回源获取新数据在生成缓存文件

proxy_cache_path /export/Datal/cache levels=1:2 keys_zone=my_cache:100m max_size=300m inactive=1d;

 

2.nginx缓存托底拦截配置,该配置在具体的location内

location / {

#配置上面定义的缓存空间名称,必选配置
proxy_cache my_cache;
#设置缓存的key,还可以根据url中的参数进行自定义;$args表示所有参数,也可以使用其中的一个参数,例如:$arg_name,表示只取参数列表中的name参数,此处可以灵活配置,必选配置

proxy_cache_key $host$uri$is_args$args;

#设置绕过缓存的请求url,即url中包含该配置的值,则该请求不从缓存中获取数据,非必须配置

proxy_cache_bypass $arg_noCache;

#根据响应码设置缓存时间,超过这个时间即使缓存文件中有缓存数据,nginx也会回源请求新数据。此处的值还可以根据response中header中设置的Cache-Control缓存时间进行控制,header中的设置优先级最高,如果此处和header都没有设置缓存时间,则nginx不会生成缓存文件,非必须配置,如果此处不做配置,header中必须有设置
proxy_cache_valid 200 1m;

#此处是托底配置,旧的总比出错强,当nginx请求后台服务器报错的时候,如果返回配置的错误响应码,nginx则直接取缓存文件中的旧数据返回给用户,托底使用必选配置
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;

#缓存并发锁,当nginx缓存没有命中的时候只有一个请求回源tomcat请求数据,其他请求会等待。非必选配置
proxy_cache_lock on;

#等待锁超时时间设置 非必选配置
proxy_cache_lock_timeout 1s;
proxy_pass tomcat_localhost ;
}

3.经过上述配置后,nginx的缓存托底配置就完成了,在缓存文件有效时间内,即使后台tomcat挂掉,被缓存过的页面或接口也能正常提供服务。

 


版权声明:本文为博主原创文章,未经博主允许不得转载。

nginx cache 学习总结

Nginx cache 学习总结   一、nginx cache的基本指令 1.1 proxy_cache    syntax: proxy_cache zone| off; de...
  • hero00e
  • hero00e
  • 2016年10月19日 11:55
  • 2065

nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除

一,nginx反向代理配置      #tomcat   显然就是用户访问www.wolfdream.com(需要设置本地localhost,将www.wolfdream.com指向ngin...
  • sgear
  • sgear
  • 2014年09月29日 14:42
  • 1383

nginx proxy_cache 缓存配置

前言: 由于本人工作原因,涉及到网络直播领域,其中视频的回放下载,涉及到了一些视频下载方面的技术。针对于一个完整视频的下载,目前市面上的主流做法是,先将整个视频流切片,存储到文件服务器中,在用户需要...
  • dengjiexian123
  • dengjiexian123
  • 2016年11月29日 00:16
  • 22883

利用Proxy Cache使Nginx对静态资源进行缓存

前言 Nginx是高性能的HTTP服务器,通过Proxy Cache可以使其对静态资源进行缓存。其原理就是把静态资源按照一定的规则存在本地硬盘,并且会在内存中缓存常用的资源,从而加快静态资源...
  • czp11210
  • czp11210
  • 2014年06月05日 10:16
  • 15895

Nginx content cache Nginx内容缓存

原文地址:http://nginx.com/resources/admin-guide/caching/ Nginx content cache  Nginx内容缓存 This chapter des...
  • agangdi
  • agangdi
  • 2014年11月06日 15:53
  • 7753

HTTP Cache 总结及Nginx Cache配置

简介先说一下我对缓存的理解:缓存可以让用户更加接近数据HTTP缓存指我们用浏览器访问网站时,根据服务器返回的HTTP缓存响应头设置,缓存相应的数据,下次访问就可以直接使用,或者去服务器验证数据是否过期...
  • fang_sh_lianjia
  • fang_sh_lianjia
  • 2016年10月07日 20:02
  • 9937

nginx proxy_cache 配置

众所周知nginx proxy_cache可以对请求的response进行缓存,起到类似CDN的作用,甚至有比CDN提供更多的功能,还可以用来缓存托底数据,当后台tomcat挂掉的时候,nginx直接...
  • bigtree_3721
  • bigtree_3721
  • 2017年05月31日 15:52
  • 522

nginx 设置缓存

#缓存目录 目录级别 缓存池 有效时间 最大空间 proxy_cache_path /usr/local/etc/nginx/cache levels=1:2 keys_zone=STATI...
  • sinat_29843547
  • sinat_29843547
  • 2017年02月04日 17:51
  • 486

Nginx HTTP缓存设置

Nginx提供了expires、etag、if-modified-since指令来实现浏览器缓存控制。   expires   如果我们使用Nginx作为静态资源服务器,那么可以使用expires...
  • jek123456
  • jek123456
  • 2017年05月10日 09:15
  • 6676

tomcat缓存静态资源深入

tomcat缓存静态资源深入
  • zhaozhenzuo
  • zhaozhenzuo
  • 2014年05月11日 20:20
  • 18769
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用nginx proxy_cache进行网站缓存托底配置
举报原因:
原因补充:

(最多只允许输入30个字)