nginx代理缓存

news2024/9/20 22:52:38

        在服务器架构中,反向代理服务器除了能够起到反向代理的作用之外,还可以缓存一些资源,加速客户端访问,nginx的ngx_http_proxy_module模块不仅包含了反向代理的功能还包含了缓存功能。

1、定义代理缓存规则

参数详解:

 proxy_cache_path 表示代理缓存区域

/etc/nginx/cache/gyq 表示缓存区的路径,即用于缓存的本地目录

levels 表示等级的意思,此处表示目录的层级。注意:将大量文件放置在单个目录中会导致文件访问缓慢,所以建议使用两级目录层次结构。若没有配置levels参数,nginx默认将所有文件放到同一个目录中。

keys_zone 表示一个共享区域,用于缓存键值。键值是资源的标签,不同资源对应不同的键值,每个键值都具有唯一性。

        服务器通过键值查询客户端请求的资源。若查询不到对应的资源,就向web服务器进行请求,将请求到的资源通过散列算法生成键值并存储到kesy_zone。将键值存储到keys_zone可以使Nginx再不查询磁盘的情况下,快速判断一个请求的资源是否在缓存中,大大提高查询速度。1MB大小的内存空间可以存储大约8000个键值。

pproxy_cache 表示keys_zone的名称,为方便调用,允许用户进行自定义。10M表示keys_zone空间大小。

max_size 表示缓存资源大小的上限,如果用户不指定具体值,则表示允许缓存资源量不断增长,可占用所有可用磁盘的空间。配置具体值后,当缓存达到上限时,处理器便调用cache manager来移除最近最少被使用的文件,将缓存资源所占用的空间降低至小于上限值的范围。

inactive 是不活跃的意思,此处表示缓存存在的时间。如果一项资源在60分钟内没有被客户端请求,无论该资源是否过期,缓存管理都会在缓存空间中删除。若inactive没有被配置,,则该默认值为10分钟。nginx不会自动删除由缓存控制头部指定的过期资源,过期资源只有在inactive指定时间内没有被访问的情况下才会被Nginx删除。如果过期资源访问了,那么nginx将从源服务器上重新获取资源,并更新对应的inactive值。

user_temp_path 表示用户缓存路径。当资源被写入缓存空间之前,需要将资源先写入用户缓存路径,再复制到缓存空间,如此就增加了复制次数浪费了服务器资源,通常建议关闭。

2、引用

参数详解:

        proxy_cache proxy_cache 表示调用名称为“proxy_cache”的缓存规则。
        proxy_cache_valid 200 304 12h; 表示用户的访问的访问状态为200或者304时,缓存对应的资源,缓存时间为12小时。
        proxy_cache_valid any 10m; 表示用户访问的状态码不是200,也不是304时将对应资源进行缓存,,缓存时间为10分钟。
        proxy_cache_key $host$uri$is_args$args; 表示根据客户端请求资源的地址、路径、参数、参数值,通过散列值算法生成键值。
        add_header Nginx-Cache "$upstream_cache_status"; 表示在nginx请求头部中添加web服务器的缓存状态信息。
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 表示如果出现500、502、503或者504的访问结果,就换下一个web服务器进行访问。

3、访问缓存

首次访问:MISS表示未命中缓存

第二次访问之后:HIT表示命中缓存

各种代理返回值:

注意:只有当网站被成功访问时,响应头部才会响应代理缓存的返回值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1930879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

万字长文之分库分表里如何优化分页查询?【后端面试题 | 中间件 | 数据库 | MySQL | 分库分表 | 分页查询】

分库分表的一般做法 一般会使用三种算法: 哈希分库分表:根据分库分表键算出一个哈希值,根据这个哈希值选择一个数据库。最常见的就是数字类型的字段作为分库分表键,然后取余。比如在订单表里,可以按照买家的ID除以8的…

开发实战经验分享:互联网医院系统源码与在线问诊APP搭建

作为一名软件开发者,笔者有幸参与了多个互联网医院系统的开发项目,并在此过程中积累了丰富的实战经验。本文将结合我的开发经验,分享互联网医院系统源码的设计与在线问诊APP的搭建过程。 一、需求分析 在开发任何系统之前,首先要…

UPFC统一潮流控制器的simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 UPFC统一潮流控制器的simulink建模与仿真。能够在不增加输电线路物理容量的情况下,显著提高电力系统的传输能力和稳定性。UPFC能够同时控制输电线路的有功功率、无…

技术速递|Let’s Learn .NET Aspire – 开始您的云原生之旅!

作者:James Montemagno 排版:Alan Wang Let’s Learn .NET 是我们全球性的直播学习活动。在过去 3 年里,来自世界各地的开发人员与团队成员一起学习最新的 .NET 技术,并参加现场研讨会学习如何使用它!最重要的是&#…

微软研究人员为电子表格应用开发了专用人工智能LLM

微软的 Copilot 生成式人工智能助手现已成为该公司许多软件应用程序的一部分。其中包括 Excel 电子表格应用程序,用户可以在其中输入文本提示来帮助处理某些选项。微软的一组研究人员一直在研究一种新的人工智能大型语言模型,这种模型是专门为 Excel、Go…

在设计电气系统时,电气工程师需要考虑哪些关键因素?

在设计电气系统时,电气工程师需要考虑多个关键因素,以确保系统的安全性、可靠性、效率和经济性。我收集归类了一份plc学习包,对于新手而言简直不要太棒,里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕设800套和语言…

【Neural signal processing and analysis zero to hero】- 1

The basics of neural signal processing course from youtube: 传送地址 Possible preprocessing steps Signal artifacts (not) to worry about doing visual based artifact rejection so that means that before you start analyzing, you can identify those data epic…

《学会 SpringBoot · 定制 SpringMVC》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 近期刚转战 CSDN,会严格把控文章质量,绝不滥竽充数,如需交流&#xff…

Pytorch学习笔记day1—— 安装教程

这里写自定义目录标题 Pytorch安装方式 工作需要,最近开始搞一点AI的事情。但是这个国产的AI框架,实话说对初学者不太友好 https://www.mindspore.cn/ 比如说它不支持win下的CUDA,可是我手里只有3070Ti和4060也不太可能自己去买昇腾就有点绷不…

C语言 | Leetcode C语言题解之第239题滑动窗口最大值

题目&#xff1a; 题解&#xff1a; int* maxSlidingWindow(int* nums, int numsSize, int k, int* returnSize) {int prefixMax[numsSize], suffixMax[numsSize];for (int i 0; i < numsSize; i) {if (i % k 0) {prefixMax[i] nums[i];} else {prefixMax[i] fmax(pref…

C++深度解析教程笔记9-静态成员变量,静态成员函数,二阶构造,友元,函数重载,操作符重载

C深度解析教程笔记9 第25课 - 类的静态成员变量实验-数对象个数&#xff08;失败&#xff09;实验-静态变量小结 第26课 - 类的静态成员函数实验-修改对象的静态变量数值实验-利用静态成员函数实验-静态变量静态函数实现统计对象个数小结 第27课 - 二阶构造模式实验-初始化是否…

【JavaEE】HTTP(2)

&#x1f921;&#x1f921;&#x1f921;个人主页&#x1f921;&#x1f921;&#x1f921; &#x1f921;&#x1f921;&#x1f921;JavaEE专栏&#x1f921;&#x1f921;&#x1f921; &#x1f921;&#x1f921;&#x1f921;下一篇文章&#xff1a;【JavaEE】HTTP协议(…

C++——类和对象(下)

文章目录 一、再探构造函数——初始化列表二、 类型转换三、static成员静态成员变量静态成员函数 四、 友元友元函数友元类 五、内部类六、匿名对象 一、再探构造函数——初始化列表 之前我们实现构造函数时&#xff0c;初始化成员变量主要使⽤函数体内赋值&#xff0c;构造函…

【读点论文】ASAM: Boosting Segment Anything Model with Adversarial Tuning,对抗学习提升性能

ASAM: Boosting Segment Anything Model with Adversarial Tuning Abstract 在不断发展的计算机视觉领域&#xff0c;基础模型已成为关键工具&#xff0c;对各种任务表现出卓越的适应性。其中&#xff0c;Meta AI 的 Segment Anything Model (SAM) 在图像分割方面表现突出。然…

第十一届MathorCup高校数学建模挑战赛-C题:海底数据中心的散热优化设计(续)(附MATLAB代码实现)

目录 5.3 问题三的求解 5.3.1 数据分析 5.3.2 数据处理 5.3.4 得出结论 5.4 问题四的求解 5.4.1 数据分析 5.4.2 算法分析 5.5 问题五的求解 六、模型评价与推广 6.1 模型的优点 6.2 模型的缺点 6.3 模型的推广 七、参考文献 代码实现 8.1 图 4 的代码 8.2 图 5 的代码 8.3 图…

旗晟巡检机器人的应用场景有哪些?

巡检机器人作为现代科技的杰出成果&#xff0c;已广泛应用于各个关键场景。从危险的工业现场到至关重要的基础设施&#xff0c;它们的身影无处不在。它们以精准、高效、不知疲倦的特性&#xff0c;担当起保障生产、守护安全的重任&#xff0c;为行业发展注入新的活力。那么&…

VMware安装CentOS 7

在虚拟机中安装无论是Windows还是Linux其实都差不多&#xff0c;主要还是需要熟悉VMware的使用&#xff0c;多新增几次就熟悉了&#xff0c;可以反复删除再新增去练习… 如下是安装CentOS 7 安装过程&#xff1a; VMare Workstation 16 PRO 中安装CentOS 7 CentOS 7 下载推荐…

PTA - 嵌套列表求和

使用递归函数对嵌套列表求和 函数接口定义&#xff1a; def sumtree(L) L是输入的嵌套列表。 裁判测试程序样例&#xff1a; /* 请在这里填写答案 */L eval(input()) print(sumtree(L)) # 调用函数 输入样例&#xff1a; 在这里给出一组输入。例如&#xff1a; [1,[2…

数据结构-C语言-排序(1)

代码位置&#xff1a;test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言&#xff1a; 1.1-排序定义&#xff1a; 排序就是将一组杂乱无章的数据按照一定的规律&#xff08;升序或降序&#xff09;组织起来。 1.2-排序分类&#xff1a; 常见的排序算法&#xff1a; 插…

业务终端动态分配IP-DHCP技术、DHCP中继技术

一、为什么需要DHCP? 1、许多设备(主机、无线WiFi终端等)需要动态地址的分配; 2、人工手工配置任务繁琐、容易出错,比如:IP地址冲突; 3、网络规模扩大、复杂度提高,网络配置越来越复杂,计算机的位置变化和数量超过可分配IP地址的数量,造成IP地址变法频繁以及IP地址…