Nginx 缓存清理 菜鸟教程

您所在的位置:网站首页 nginx的缓存文件位置 Nginx 缓存清理 菜鸟教程

Nginx 缓存清理 菜鸟教程

2024-07-05 06:24:20| 来源: 网络整理| 查看: 265

Nginx 安全控制 nginx TCP 和 UDP 负载平衡 Nginx 缓存清理

NGINX 可以从缓存中删除旧的和过期的缓存文件。过期的缓存内容需要及时删除,以防止同时提供新旧版本的网页。当收到包含自定义 HTTP 标头或 HTTP PURGE 方法的特殊“Purge”请求时,将清除缓存。

配置缓存清除

让我们设置一个配置,用于识别使用 HTTP PURGE 方法的请求并删除匹配的 URL。

1. 在 http {} 上下文中,添加一个新变量,例如 $purge_method,它依赖于 $request_method 变量:

http { ... map $request_method $purge_method { PURGE 1; default 0; } }

2.在配置缓存的 location {} 块中,添加 proxy_cache_purge 指令来指定缓存清除请求的条件。在我们的例子中,就是上面步骤中配置的 $purge_method :

server { listen 80; server_name www.caioniaojc.com; location / { proxy_pass https://localhost:8002; proxy_cache mycache; proxy_cache_purge $purge_method; } } 发送清除命令

当 proxy_cache_purge 指令配置完成后,我们需要发送一个特殊的 cache?purge 请求来清除缓存。我们可以使用一系列工具发出清除请求,包括本例中的 curl 命令: 

$ curl -X PURGE -D - "https://www.cainiaojc.com/*" HTTP/1.1 204 No Content Server: nginx/1.15.0 Date: Sat, 19 May 2018 16:33:04 GMT Connection: keep-alive

在上面的示例中,具有由星号通配符指定的公共 URL 部分的资源被清除。但是,此类缓存条目不会完全从缓存中删除:它们保留在磁盘上,直到它们因不活动、缓存清除程序或客户端尝试访问它们而被删除。

限制对清除命令的访问

建议限制允许发送缓存清除请求的 IP 地址数量:

geo $purge_allowed { default 0; # deny from other 10.0.0.1 1; # allow from localhost 192.168.0.0/24 1; # allow from 10.0.0.0/24 } map $request_method $purge_method { PURGE $purge_allowed; default 0; }

在上面的例子中,NGINX 检查请求中是否使用了 PURGE 方法,如果是,则分析客户端 IP 地址。如果 IP 地址被列入白名单,则 $purge_method 设置为 $purge_allowed:1 用于允许清除,0 用于拒绝。

从缓存中完全删除文件

要完全删除与星号匹配的缓存文件,请激活一个特殊的缓存清除进程,该进程永久迭代所有缓存条目并删除与通配符键匹配的条目。在 http {} 上下文中的 proxy_cache_path 指令中包含 purger 参数:

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=mycache:10m purger=on; 缓存清除配置示例 http { ... proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=mycache:10m purger=on; map $request_method $purge_method { PURGE 1; default 0; } server { listen 80; server_name www.example.com; location / { proxy_pass https://localhost:8002; proxy_cache mycache; proxy_cache_purge $purge_method; } } geo $purge_allowed { default 0; 10.0.0.1 1; 192.168.0.0/24 1; } map $request_method $purge_method { PURGE $purge_allowed; default 0; } } 字节范围缓存

有时初始缓存填充操作需要相当长的时间,特别是对于大型文件。例如,当一个视频文件开始下载以满足部分文件的初始请求时,后续请求必须等待整个文件下载并放入缓存中。

在 Nginx 中,可以缓存此类范围请求,并使用 Cache Slice 模块逐渐填充缓存,该模块将文件划分为更小的“切片”。每个范围请求选择覆盖所请求范围的特定切片,如果该范围仍未缓存,则将其放入缓存中。对这些切片的所有其他请求都从缓存中获取数据。

要启用字节范围缓存:

首先,确保 NGINX 是使用 Cache Slice 模块编译的。 使用 slice 指令定义切片的大小: location / { slice 1m; } 选择使切片下载速度更快的切片大小。如果大小太小,则内存使用可能过多,并且打开了大量文件描述符。如果大小很大,则处理请求可能会导致延迟。将 $slice_range 变量添加到缓存键: proxy_cache_key $uri$is_args$args$slice_range;   使用 206 状态代码启用响应缓存: proxy_cache_valid 200 206 1h; 通过在 Range 标头字段中设置变量(即 $slice_range)来启用将范围请求传递到代理服务器: proxy_set_header Range $slice_range;  

这是完整的配置:

location / { slice 1m; proxy_cache cache; proxy_cache_key $uri$is_args$args$slice_range; proxy_set_header Range $slice_range; proxy_cache_valid 200 206 1h; proxy_pass http://localhost:8000; }

请注意,如果打开切片缓存,则不得更改初始文件。

组合配置示例 http { ... proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300 loader_files=200 max_size=200m; server { listen 8080; proxy_cache mycache; location / { proxy_pass http://backend1; } location /some/path { proxy_pass http://backend2; proxy_cache_valid any 1m; proxy_cache_min_uses 3; proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; } } } Nginx 安全控制 nginx TCP 和 UDP 负载平衡


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭