nginx的反向代理缓存

假设有两台物理机,他们分属于不同的域名,以webgame的游戏运营商和开发商为例,运营商需要获取游戏中的排行数据,开发商为了过多对游戏服务器的请求,会在发起请求的机器上设置缓存(或是让运营商定时过来抓取一次数据)

nginx设置web缓存,需要用到的相关指令:

1、proxy_cache

2、proxy_cache_path

3、proxy_cache_valid

需要注意的事项:

1、windows下面设置缓存不会在指定的path生成的缓存文件

2、指定的path上一级目录需要存在,否则会报错 (假设缓存文件存放于/usr/local/cc/abc,那么cc目录需要事先建立)

3、proxy_cache_path 只能存放于http中,不能放置于server或location

具体的实例:

proxy_cache_path /usr/local/nginx_rank_cache levels=1:2 keys_zone=rankCache:1m inactive=1h max_size=30m;

第一次请求过来时,将对应将生成如下目录:

上面指令中 “/usr/local/nginx_rank_cache”为缓存存放的目录路径

levels指定该缓存空间有两层hash目录,第一层目录为1个字母,第二层为2个字母,对应上图中的“3”和“b6”

keys_zone=rankCache 参数用来为这个缓存区起名(proxy_cache 指令需要用到  其后对应缓存区名称)

:1m 指内存缓存空间大小为1MB

inactive 的1h指如果缓存数据在1小时(天:d、秒:s、分:m)内没有被访问,将自动被删除;

max_size=30m 指硬盘缓存大小为30MB

打开上图中的缓存文件,可以看到如下信息(编码格式有点问题,显示乱码了):

用Fiddler抓取第一次请求时的数据,将可以看到如下的响应(在不清除缓存的情况下,过期时间内的请求都直接是Cache,Fiddler抓取不到这样的请求):

从05:58~17:58中间有12个hours,而nginx上也是这样设置的:

proxy_pass   http://youdomain.com; proxy_set_header host otherdomain.com'; proxy_cache rankCache; proxy_cache_valid  200 304  12h; proxy_cache_valid any 1m;

expires 12h;

proxy_cache_valid指令,可以在http、server、location中使用,如果proxy_cache_valid 不指定状态码,直接指定缓存时间,将只缓存默认的状态码(200、301、302),而如果需要对304也指定,则需要写完整的状态码,如上面写的200 304

还有其它的指令,如:proxy_cache_methods、proxy_cache_min_uses、proxy_cache_key等,根据实际需要自定义。

合理的使用缓存,可以提高页面访问的速度、节省带宽~

有兴趣延伸浏览资料的话,可以看看MSDN上的《Fiddler PowerToy - Part 2: HTTP Performance

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

移动APP安全在渗透测试中的应用

这篇文章从去年很早就想写,一直没时间,刚好过段时间有沙龙是讲这方面的东西,整理了下就有了下文。 以往安全爱好者研究的往往是app的本地安全,比如远控、应用破解、...

3407
来自专栏tiane12

Linux/CentOS定期清空指定目录脚本

1954
来自专栏hotqin888的专栏

onlyoffice document server实时文档协作的部署与开发细节

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

1291
来自专栏知晓程序

小程序服务器崩溃了怎么办?| 小程序问答 #38

不用担心,知晓程序(微信号 zxcx0101)今天就来教你,在小程序出现意外状况时,我们可以做些什么。

842
来自专栏木头编程 - moTzxx

微信公众平台开发[1] —— 获取用户Openid及个人信息

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

8331
来自专栏极乐技术社区

探究小程序插件

前段时间,微信释放了小程序插件功能。有了它,小程序开发者就可以通过这个功能,强化自身小程序能力;小程序服务提供商也可以用它,为开发者、用户提供强大的小程序功能支...

1270
来自专栏Java架构

阿里双十一秒杀系统架构设计,有哪些技术关键点?

秒杀活动只是网站营销的一个附加活动,特点是:时间短、并发访问量大,如果和网站原有应用部署在一起,必然会对现有业务造成冲击。

1693
来自专栏Java后端生活

Linux(二)CentOS的安装

3155
来自专栏企鹅号快讯

浅谈几种SLB技术的实现

今天小普和大家分享下,在最近的学习过程中,关于几个负载均衡技术的理解,以及几个实现的原理和关键点,希望对各位读者朋友有收获。 1 http重定向协议实现负载均衡...

1K5
来自专栏FreeBuf

挖洞经验|雅虎小企业服务平台Luminate身份认证漏洞

对内容管理系统的开发来说,一个重要和关键的步骤就是账户的身份认证实现。身份认证功能可以管理用户登录行为和会话,作出有效的登录访问控制。通常,这种认证功能一般由用...

3114

扫码关注云+社区