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;

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

image

image

上面指令中 “/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

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

image

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

image

image

从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等,根据实际需要自定义。

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

免责声明:文章转载自《nginx的反向代理缓存》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JSR303实现数据校验案例Spring Boot 2.2.x Junit4 升级为Junit5 后的变化、对比 找不到 org.junit.jupiter.api.Test下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用kubeadm部署K8S v1.17.0集群

环境信息 操作系统:CentOS Linux release 7.7.1908 (Core) docker:19.03.8 kubernetes:v1.17.0 集群信息 hostname IP k8s-master 192.168.87.10 k8s-node01 192.168.87.11 一、准备工作(所有节点执行) 1.1、...

SSD固态盘应用于Ceph集群的四种典型使用场景

在虚拟化及云计算技术大规模应用于企业数据中心的科技潮流中,存储性能无疑是企业核心应用是否虚拟化、云化的关键指标之一。传统的做法是升级存储设备,但这没解决根本问题,性能和容量不能兼顾,并且解决不好设备利旧问题。因此,企业迫切需要一种大规模分布式存储管理软件,能充分利用已有硬件资源,在可控成本范围内提供最佳的存储性能,并能根据业务需求变化,从容量和性能两方面同...

ELK之nginx日志使用json格式输出

json  Nginx默认日志输出格式为文本非json格式,修改配置文件即可输出json格式便于收集以及绘图 修改nginx配置文件添加配置,增加一个json输出格式的日志格式 log_format access_log_json '{"user_ip":"$http_x_forwarded_for","lan_ip":"$remote_addr","lo...

vue页面是否缓存的两种方式

第一种 <keep-alive> <router-view v-if="$route.meta.keepAlive"></router-view> </keep-alive> <router-view v-if="!$route.meta.keepAlive"></router-view&g...

tomcat和nginx配置java服务器

tomcat和nginx配置java服务器 环境配置 服务器配置  写了这么久的SSM,做了一个简单的网站【没有加入数据库】,然后就要开始部署javaWEB的云服务器了。本次搭建使用的Tomcat和nginx。 服务器系统:Ubuntu16.04 Tomcat nginx 安装java环境【oracle java8】 如果在中将 添加仓库源...

windows下nginx的安装及使用

1.下载nginx http://nginx.org/en/download.html 下载后解压,解压后如下 2.启动nginx 有很多种方法启动nginx (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过 (2)打开cmd命令窗口,切换到nginx解压目录下,输入命令 nginx.exe 或者 start nginx ,回车即可 3...