0
点赞
收藏
分享

微信扫一扫

Nginx进阶篇(3)Proxy缓存

灯火南山 2022-06-07 阅读 27

缓存类型

网页缓存 (公网)CDN

CDN就可以理解为分布在每个县城的火车票代售点,用户在浏览网站的时候,CDN会选择一个离用户最近的CDN边缘节点来响应用户的请求,这样海南移动用户的请求就不会千里迢迢跑到北京电信机房的​​服务器​​(假设源站部署在北京电信机房)上了。

​​https://www.yisu.com/zixun/413506.html​​

数据库缓存 memcache redis

分布式数据库缓存指的是在高并发环境下,为了减轻数据库压力和提高系统响应时间,在数据库系统和应用系统之间增加的独立缓存系统。

网页缓存  nginx-proxy

客户端缓存 浏览器缓存

模块:ngx_http_proxy_module

语法:

缓存开关
Syntax: proxy_cache zone | off;
Default: proxy_cache off;
Context: http, server, location

代理缓存
Syntax: proxy_cache_path path [levels=levels] keys_zone=name:size[inactive=time] [max_size=size] [manager_files=number]
Default: —
Context: http
example:proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;

缓存维度
Syntax: proxy_cache_key string; 定义缓存唯一key,通过唯一key来进行hash存取,缓存文件名
Default: proxy_cache_key $scheme$proxy_host$request_uri;
Context: http, server, location

缓存过期
Syntax: proxy_cache_valid [code ...] time;
Default: —
Context: http, server, location
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;


启动缓存

延续第二篇实验​​https://blog.51cto.com/u_15630500/5364244​​

设置nginx-2为缓存服务器
vim /etc/nginx/nginx.conf
http {
proxy_cache_path /app/cache/ levels=1:2 keys_zone=proxy_cache:10m max_size=10g inactive=60m use_temp_path=off;
}

proxy_cache_path命令中的参数及对应配置说明如下:

1.用于缓存的本地磁盘目录是/app/tianyun.me/cache

2.levels在/app/tianyun.me/cache/设置了一个两级层次结构的目录。

如果levels参数没有配置,则NGINX会将所有的文件放到同一个目录中。

3.keys_zone设置一个共享内存区,该内存区用于存储缓存键和元数据,有些  类似计时器的用途。将键的拷贝放入内存可以使NGINX在不检索磁盘的情况 下快速决定一个请求是`HIT`还是`MISS`,这样大大提高了检索速度。一个1MB的内存空间可以存储大约8000个key,那么上面配置的10MB内存空间可以存储差不多80000个key。

4.max_size设置了缓存的上限(在上面的例子中是10G)。这是一个可选项;如果不指定具体值,那就是允许缓存不断增长,占用所有可用的磁盘空间。当缓存达到这个上线,处理器便调用cache manager来移除最近最少被使用的文件,这样把缓存的空间降低至这个限制之下。

5.inactive指定了项目在不被访问的情况下能够在内存中保持的时间。在上面的例子中,如果一个文件在60分钟之内没有被请求,则缓存管理将会自动将其在内存中删除,不管该文件是否过期。该参数默认值为10分钟(10m)。注意,非活动内容有别于过期内容。NGINX不会自动删除由缓存控制头部指定的过期内容(本例中Cache-Control:max-age=120)。过期内容只有在inactive指定时间内没有被访问的情况下才会被删除。如果过期内容被访问了,那么NGINX就会将其从原服务器上刷新,并更新对应的inactive计时器。

6.NGINX最初会将注定写入缓存的文件先放入一个临时存储区域, use_temp_path=off命令指示NGINX将在缓存这些文件时将它们写入同一个目录下。


 location / {   
proxy_cache proxy_cache;
proxy_cache_valid 200 304 12h;
proxy_cache_valid any 10m;
proxy_cache_key $host$uri$is_args$args;
add_header Nginx-Cache "$upstream_cache_status";
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}
  • Proxy_cache   使用名为 的对应缓存配置
  • proxy_cache_valid  200 206 304 301 302 12h; 对httpcode为200…的缓存12小时
  • proxy_cache_valid 设置不同相应码的缓存时间,除了上面的,其他的的存10分钟
  • proxy_cache_key $uri  定义缓存唯一key,通过唯一key来进行hash存取
  • add_header:缓存命中情况如何在http头中体现,以及在nginx日志中查看
  •  proxy_cache_path 缓存文件路径
  • proxy_next_upstream 出现502-504或错误,会跳过此台服务器访问下一台服务器
mkdir -p /app/cache
systemctl restart nginx


 使用PC客户机,再次访问nginx-2服务器

Nginx进阶篇(3)Proxy缓存_nginx

、新创建的网页文件,初次访问均为miss。


清理nginx_proxy缓存

1.rm删除已缓存的数据
rm -rf /app/cache
2.通过ngx_cache_purge扩展模块清理,需要编译安装nginx
举报

相关推荐

0 条评论