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的本地安全,比如远控、应用破解、...

46570
来自专栏tiane12

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

30040
来自专栏技术小黑屋

为Android程序申请权限注意

Android系统提供为程序提供了权限申请,即在manifest中使用uses-permission来申请即可.实现起来非常简单,但是有些问题会随之浮出水面. ...

22310
来自专栏xingoo, 一个梦想做发明家的程序员

安装nodejs

NodeJS现在也是很火的一门技术,使得javascript跻身到服务器端的行列。 为了使用一款轻量级的httpserver,只好安装了nodejs,其实平...

40070
来自专栏大魏分享(微信公众号:david-share)

VMware软件定义数据中心分析工具介绍----第三终结篇

在本文连载的第一篇中,我向大家介绍了vROps的基本架构、vROps的指标含义,以及如何自定义告警。第二篇中,介绍了如何自定义仪表盘。在本篇中,我将介绍如何自定...

40880
来自专栏娱乐心理测试

小程序开发者调试工具使用说明

微信开发者工作是微信官方提供的针对微信小程序的开发工具,集中了开发,调试,预览,上传等功能。微信团队发布了微信小程序开发者工具、微信小程序开发文档和微信小程序设...

85630
来自专栏web前端教室

【视频5分钟】如何保持不同页面间的统计数据一致性?

温馨提示:视频请点此观看 // 视频原文: 为了更好的掌握用户的需求,我们经常需要统计: 1、统计用户在站点的停留时长 2、收集页面链接的点击数量等 3、统...

217100
来自专栏Golang语言社区

go实现一个简单的游戏服务器框架(lotou)起源

https://github.com/sydnash/lotou 目前代码比较粗糙,欢迎各种改进建议。 最近一直想学习一些关于游戏服务器的知识,显示看了一下云...

379120
来自专栏Java后端生活

Linux(二)CentOS的安装

35450
来自专栏开源优测

移动测试Appium工作原理

移动测试Appium工作原理 介绍 Appium是一个开源工具,用于自动化iOS、Android设备和Windows桌面平台上的原生、移动Web和混合应用。 "...

63870

扫码关注云+社区

领取腾讯云代金券