广告
返回顶部
首页 > 资讯 > 服务器 >详解ngx_cache_purge_proxy_cache指令使用
  • 824
分享到

详解ngx_cache_purge_proxy_cache指令使用

2024-04-02 19:04:59 824人浏览 八月长安
摘要

目录1. proxy_cache 指令2. proxy_cache_bypass指令3. proxy_cache_key指令4. proxy_cache_lock指令5. proxy

1. proxy_cache 指令

该指令用于配置一块公用的内存区域的名称,该区域可以存放缓存索引数据。这些数据在Nginx服务器启动时由缓存索引重建进程负责建立,在Nginx服务器的整个运行过程中由缓存管理进程负责定时检测过期数据,检索等管理工作。

proxy_cache zone | off;
zone,设置的用于存放缓存索引的内存区域的名称。
off,关闭proxy_cache 功能,是默认的设置。

2. proxy_cache_bypass指令

该指令用于配置Nginx服务器向客户端发送响应数据时,不从缓存中获取的条件。这些条件支持使用Nginx 配置的常用变量。

proxy_cache_bypass string …;
string为条件变量,支持设置多个,当至少有一个字符串指令不为空或者不等于О时,响应数据不从缓存中获取。
看一个例子: proxy_cache _bypass $cookie_nocache $arg nocache $Sarg_comment

$Http_pragma $http.authorization;
其中,Scookie_nocache、Sarg_nocache、Sarg_comment、Shttp_pragma
和Shttp_authorization 都是Nginx配置文件的变量,

3. proxy_cache_key指令

该指令用于设置Nginx服务器在内存中为缓存数据建立索引时使用的关键字

proxy cache key string;
string为设置的关键字,支持变量。

如果我们希望缓存数据包含服务器主机名称等关键字,则可以将该指令设置为:
proxy_cache_key “s c h e m e schemeschemehost$request”;

4. proxy_cache_lock指令

该指令用于设置是否开启缓存的功能。在缓存中,某些数据项可以同时被多个请求返回的响应数据填充。开启该功能后,Nginx服务器同时只能有一个请求填充缓存中的某一数据项,这相当于给该数据项上锁,不允许其他请求操作。其他的请求如果也想填充该项,必须等待该数据项的锁被释放。这个等待时间由
proxy_cache_lock_timeout 指令配置。

proxy_cache_lock on | off;
默认情况下为关闭

5. proxy_cache_lock_timeout指令

该指令用于设置缓存的锁功能开启以后锁的超时时间。具体细节参见proxy_cache_lock 指令的相关内容

proxy cache_ lock_timeout time;
其中,time为设置的时间,默认为5s。

6. proxy_cache_min_uses指令

该指令用于设置客户端请求发送的次数,当客户端向被代理服务器发送相同请求达到该指令设定的次数后,Nginx服务器才对该请求的响应数据做缓存。合理设置该值可以有效地降低硬盘上缓存数据的数量,并提高缓存的命中率。

proxy_cache_min_uses number;
其中,number为设置的次数。默认设置为1。

7. proxy_cache_path指令

该指令用于设置Nginx服务器存储缓存数据的路径以及和缓存索引相关的内容

proxy_cache_path [levels=levels] keys_zone=name:sizel [inactive=time1] [max_size=size2][loader_files=number] [loader_sleep=time2][loader_threshold-time3];
  • path,设置缓存数据存放的根路径,该路径应该是预先存在于磁盘上的。levels,设置在相对于path指定目录的第几级hash目录中缓存数据。
  • levels=1:表示一级hash目录;levels=1:2,表示两级,依次类推。目录的名称是基于请求URL通过哈希算法获取到的。
  • name:sizel,Nginx服务器的缓存索引重建进程在内存中为缓存数据建立索引,这一对变量用来设置存放缓存索引的内存区域的名称和大小。
  • timel,设置强制更新缓存数据的时间,当硬盘上的缓存数据在设定的时间内没有被访问时,Nginx服务器就强制从硬盘上将其删除,下次客户端访问该数据时重新缓存。该指令默认设置为10s。
  • size2、设置硬盘中缓存数据的大小限制。我们知道,硬盘中的缓存源数据由Nginx服务器的缓存管理进程进行管理,当缓存的大小超过该变量的设置时,缓存管理进程将根据最近最少被访问的策略删除缓存。
  • number,设置缓存索引重建进程每次加载的数据元素的数量上限。在重建缓存索引的过程中,进程通过一系列的递归遍历读取硬盘上的缓存数据目录及缓存数据文件,对每个数据文件中的缓存数据在内存中建立对应的索引,我们称每建立一个索引为加载一个数据元素。进程在每次遍历过程中可以同时加载多个数据元素,该值限制了每次遍历中同时加载的数据元素的数量。默认设置为100。
  • time2,设置缓存索引重建进程在一次遍历结束、下次遍历开始之间的暂停时长。默认设置为50ms.
  • time3,设置遍历一次磁盘缓存源数据的时间上限。默认设置为200ms

该指令设置比较复杂,一般需要设置前面三个指令的情形比较多,后面的几个变量与Nginx服务器缓存索引重建进程及管理进程的性能相关,一般情况下保持默认设置就可以了。我们来看几个简单的配置实例:

proxy_cache path /nginx/cache/a levels=1 keys_zone=a:10m;
proxy_cache_path /nginx/cache /b levels-2:2 keys_zone=b:100m;
proxy _cache_path /nginx/cache/c levels=1:1:2 keys_zone=c:1000m;

8. proxy_cache_use_stale指令

如果Nginx在访问被代理服务器过程中出现被代理的服务器无法访问或者访问错误等现象时,Nginx服务器可以使用历史缓存响应客户端的请求,这些数据不一定和被代理服务器上最新的数据相一致,但对于更新频率不高的后端服务器来说,Nginx服务器的该功能在一定程度上能够为客户端提供不间断访问。该指令用来设置一些状态,当后端被代理的服务器处于这些状态时,Nginx服务器启用该功能。

该指令可以支持的状态如语法结构中所示。

proxy_cache_use_stale error| timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_404 | off..·:

9. proxy_cache_valid指令

该指令可以针对不同的HTTP响应状态设置不同的缓存时间

proxy_cache_valid [code…] time;

  • code,设置HTTP响应的状态代码。该指令可选,如果不设置,Nginx服务器只为HTTP状态代码为200、301和302的响应数据做缓存。可以使用“any”表示缓存所有该指令中未设置的其他响应数据。
  • time,设置缓存时间。看几个例子:
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;

上述例子中,对返回状态为200和302的响应数据缓存10分钟,对返回状态为301的响应数据缓存1小时,对返回状态为非200、302和301的响应数据缓存1分钟。

10. proxy_no_cache

该指令同于配置在什么情况下不使用cache功能

proxy_no_cache $string…;
string 可以是一个或者都多个变量。当string的值不为空或者不为0时,不启用cache功能

11. proxy_store 指令

该指令配置是否在本地磁盘缓存来自被代理服务器的响应数据。这是Nginx服务器提供的另一种缓存数据的方法,但是该功能相对 Proxy
Cache简单一些,它不提供缓存过期更新、内存索引建立等功能,不占用内存空间,对静态数据的效果比较好。

proxy_store on | off | string;

  • on | off,设置是否开启ProxyStore功能。如果使用变量on,功能开启,缓存文件会存放到alias指令或root指令设置的本地路径下。默认设置为off。
  • string,自定义缓存文件的存放路径。如果使用变量string,Proxy Store功能开启,缓存文件会存放到指定的本地路径下。

Proxy Store方法多使用在被代理服务器端发生错误的情况下,用来缓存被代理服务器的响应数据。

12. proxy_store_access指令

该指令用于设置用户或用户组对Proxy Store缓存的数据的访问权限

proxy_store_access users:permissions …

  • users,可以设置为user、group或者all。
  • permissions,设置权限。

有关Proxy Store方法的使用,我们通过官方给出的实例加深理解,在该实例中笔者通过注释对配置做了说明:

location /images/
{
  root /data/www;
  error_page 404 = /fetch$uri;      #定义了404错误的请求页面
}

location /fetch/                    #匹配404错误时的请求
{
  proxy_pass http://backend;
  proxy_store on;                   #开启Proxy store方法
  proxy_store_access user:rw group:rw all:r;
  root/data/www;                    #缓存数据的路径
}

到此这篇关于详解ngx_cache_purge _proxy_cache指令使用的文章就介绍到这了,更多相关ngx_cache_purge _proxy_cache指令内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解ngx_cache_purge_proxy_cache指令使用

本文链接: https://www.lsjlt.com/news/165084.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解ngx_cache_purge_proxy_cache指令使用
    目录1. proxy_cache 指令2. proxy_cache_bypass指令3. proxy_cache_key指令4. proxy_cache_lock指令5. proxy...
    99+
    2022-11-13
  • 详解Vue自定义指令及使用
    目录一、什么是指令vue 中常用的一些内置 v- 指令v-if 和 v-show 的对比二、自定义指令的钩子函数三、全局指令四、局部指令五、带参数的自定义指令六、函数简写七、应用实例...
    99+
    2022-11-12
  • nginx 配置指令之location使用详解
    目录前言配置策略具体属性介绍Nginx是支持世界上所有网站三分之一的Web服务器。因为轻巧,模块化,用户友好的配置格式以强大的反向代理能力,Nginx迅速取代其他Web服务器成了互联...
    99+
    2022-11-13
  • .Net部署Docker-v指令使用详解
    目录记录Docker的-v指令使用前言问题出现问题解决扩展记录Docker的-v指令使用 前言 之前我浅学了一下docker,方便部署.net项目(部署的是打包之后的项目) dock...
    99+
    2023-05-17
    docker -v指令使用 .net部署docker-v指令使用
  • Verilog  8 种编译指令使用详解
    目录Verilog 编译指令define, undef`include`timescale`default_nettype`resetallcelldefine, endcellde...
    99+
    2023-05-15
    Verilog 编译指令 Verilog 编译
  • 详解nginx location指令
    location 介绍 location是Nginx中的块级指令(block directive),,location指令的功能是用来匹配不同的url请求,进而对请求做不同的处理和响...
    99+
    2022-11-12
  • Docker中的COPY指令和ADD指令详解
    目录1、COPY指令(1)COPY指令说明(2)COPY指令格式(3)COPY指令使用(4)其他2、ADD指令(1)ADD指令说明(2)ADD指令格式(3)ADD指令使用(4)不推荐...
    99+
    2022-11-13
  • Linux rpm、yum指令及使用方法详解
    rpm包的管理 一种用于互联网下载包的打包及安装工具.它生成具有.RPM 扩展名的文件, RPM是 RedHat Package Manager(RedHat 软件包管理工具)的缩写,类似 windows 的 se...
    99+
    2022-06-03
    Linux rpm yum
  • .net 预处理指令符的使用详解
    目录什么是预处理指令符?预处理指令符的使用自定义指令符使用Visual Studio快速定义指令符定义指令符区域什么是预处理指令符? 当C#编译器找到一条预处理指令#if,最后找到一...
    99+
    2022-11-12
  • Nginx的try_files指令详解
    Nginx的try_files指令详解 顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。 注:只有最后一...
    99+
    2023-09-01
    nginx 运维
  • Ubuntu常用指令及用法详解
    1.ls 这个相当于Windows 下的dir命令,可以列出当前窗口或指定窗口下的内容。 2.rm 这个相当于Windows 下的del 和rmdir 命令,可以删除文件及文件夹。 常见用法:rm -rf/home/ub...
    99+
    2022-06-04
    ubuntu常用指令
  • 汇编语言LDR指令和LDR伪指令详解
    目录LDR指令和LDR伪指令详解ARM32位指令的构成ldr指令和ldr伪指令的使用区别:补充1:补充2:汇编语言ldr伪指令LDR指令和LDR伪指令详解 ARM32位指令的构成 A...
    99+
    2023-01-28
    ldr指令和ldr伪指令 汇编语言ldr伪指令 汇编语言ldr指令
  • shell中set指令的用法详解
    语法 set [-可选参数] [-o 选项] 功能说明 set 指令可根据不同的需求来设置当前所使用 shell 的执行方式,同时也可以用来设置或显示 shell 变量的值。当指定某个单一的选项时将设置 shel...
    99+
    2022-06-04
    shell set指令
  • go常用指令之go mod详解
    目录Go mod开启 Go Module设置Go Proxy初始化go mod下载依赖包go mod 获取指定包方式添加本地依赖包Go 指令编译golang程序运行golang程序查...
    99+
    2022-11-11
  • unidbg-consoleDebugger快键指令详解
    快键指令详解: help 帮助信息d|dis 反编译信息d0x地址 地址信息m eg:mr0 mr0s mr0 16(长度) 读取寄存器内存mOx 指定地址内存w0x ...
    99+
    2023-08-17
    java 开发语言
  • Vue自定义指令详解
    目录Vue自定义指令自定义指令钩子函数输出相关属性运用例子总结Vue自定义指令 自定义指令 注册一个全局指令v-focus,该指令的功能是在页面加载时元素获得焦点 <!DO...
    99+
    2022-11-12
  • 详解从ObjectPool到CAS指令
    目录源码解析私有字段构造方法Get 方法Return 方法关于 Interlocked.CompareExchange总结相信最近看过我的文章的朋友对于Microsoft.Exten...
    99+
    2022-11-13
    ObjectPool到CAS指令 CAS指令
  • dword ptr指令详细解析
    对于这个问题,汇编语言中用一下方法处理。 (1)通过寄存器名指明要处理的数据的尺寸。例如:下面的指令中,寄存器指明了指令进行的是字操作:mov ax,1mov bx,ds:[0]mo...
    99+
    2022-11-15
    dword_ptr
  • Angular中的结构指令模式及使用详解
    目录你将学到什么Angular 结构指令是什么?Angular 结构指令是怎么工作的?结构指令的例子怎么使用 *ngIf 指令怎么使用 *ngFor 指令怎么使用 *ngSwitch...
    99+
    2022-11-13
  • Vue之常用的内置指令详解
    <body> <div id="root"> <h1 v-pre>好好学习</h1> &...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作