【nginx作为缓存服务器】

目录

  • 一、Nginx缓存介绍
  • 二、Nginx配置缓存
    • 1.缓存开关:proxy_cache
    • 2.代理缓存:proxy_cache_path
    • 4.缓存过期

一、Nginx缓存介绍

Nginx可以对浏览器缓存进行配置,让一些静态资源缓存到用户本地存储,以提高页面的响应速度,也能降低服务端的压力,加速了页面的访问。它作为一个高性能的web服务器,同时也可以是一个缓存服务器。
提供了ngx_http_proxy_module模块
官方文档:https://nginx.org/en/docs/http/ngx_http_proxy_module.html

二、Nginx配置缓存

1.缓存开关:proxy_cache

语法:proxy_cache zone | off;
zone:用于定义共享内存区域的名称

2.代理缓存:proxy_cache_path

作用域:http
语法:proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time] [max_size=size]

  • path:设置缓存的路径
  • levels:用于设置缓存的目录结构,例如levels=1:2,意味着生成两层目录。该参数与proxy_cache_key 指令有关proxy_cache_key 的默认值为$ scheme$ proxy_host$request_uri,然后将获取到的值MD5加密,然后依次从末尾按照levels的设置取值来创建目录
  • keys_zone:其中name为proxy_cache定义的值。size表示共享内存区域的大小。1M的内存可以存储大约8000个key
  • inactive:指定缓存失效的时间,如果在该段时间内,缓存文件没被访问,缓存将被删除
  • max_size:指定最大的缓存大小,当超出大小,会根据LRU算法,删除最近最少使用的数据,避免缓存占用磁盘大小太多。
    example:proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;

3.缓存维度:proxy_cache_key string
proxy_cache_key string;定义缓存唯一key,通过唯一key来进行hash存取,缓存文件名。
Default:

proxy_cache_key $scheme$proxy_host$request_uri;

4.缓存过期

proxy_cache_valid 200,302 10m;
proxy_cache_valid 404 1m;

实验配置:
http模块中的配置:

proxy_cache_path /etc/nginx/cache levels=1:2 keys_zone=proxy_cache:10m max_size=10g inactive=60m use_temp_path=off;

location中的配置

proxy_cache proxy_cache;    #Proxy_cache使用名为的对应缓存配置
proxy_cache_valid 200 304 12h;     #proxy_cache_ valid 200206304301302 12h;对httpcode为200..的缓存12小时proxy_cache_valid any 10m;         #proxy_cache_valid 设置不同相应码的缓存时间,除了上面的,其他的的存10分钟
proxy_cache_key $host$uri$is_args$args;   
#proxy_cache_key$uri定义缓存唯一key,通过唯一key来进行hash存取
proxy_cache_min_uses 1;    #命中多少次才进行缓存
add_header Nginx-Cache $upstream_cache_status;  #add_header:缓存命中情况如何在http头中体现,以及在nginx日志中查看
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;   #proxy_next_upstream出现502-504或错误.会跳过此台服务器访问下一台服务器
注意:放缓存目录数据的要先创建

在这里我遇到了一个小问题就是,我加了能查看缓存命中率的命令的,但是却查不到状态,经过百度才发现$upstream_cache_status 变量通常是与代理模块一起使用的,用于表示上游缓存的状态。如果你的请求并不是通过代理模块处理的,那么这个变量可能就不会被设置。确保你的请求是经过代理模块处理的,以便正确获取到缓存状态信息。其实原因就是我做了nginx的动静分离,所以看不到状态。

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

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

相关文章

c入门第二十一篇: 学生成绩管理系统之成绩排序

前言 在学生成绩管理系统中,必然面临着排序的问题。这里我们简单的将之前讲过的冒泡排序应用于我们的学生成绩管理系统中。 冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻的两个项,如果相邻不是预期的顺序时交…

[Java 项目亮点] 三层限流设计

思路来源:bilibili 河北王校长 文章目录 面试官可能会问你能详细介绍一下Nginx的http_limit_req_module模块吗?你能解释一下如何在Nginx中配置http_limit_req_module模块吗?你知道如何调整Nginx的http_limit_req_module模块以适应不同的业务需…

【服务器数据恢复】通过reed-solomon算法恢复raid6数据的案例

服务器数据恢复环境: 一台网站服务器中有一组由6块磁盘组建的RAID6磁盘阵列,操作系统层面运行MySQL数据库和存放一些其他类型文件。 服务器故障: 该服务器在工作过程中,raid6磁盘阵列中有两块磁盘先后离线,不知道是管理…

Linux--自定义shell

shell shell就是操作系统提供给用户与操作系统进行交互的命令行界面。它可以理解为一个用户与操作系统之间的接口,用户可以通过输入命令来执行各种操作,如文件管理、进程控制、软件安装等。Shell还可以通过脚本编程实现自动化任务。 常见的Unix系统中使…

华为机试真题实战应用【算法代码篇】-报文回路(附python、C++和JAVA代码实现)

目录 问题描述 输入描述 输出描述 样例 组播协议-IGMP 1.IGMPv1基本概念

创新性3D数据合成模型,微软推出EgoGen

随着AR、VR等设备的广泛应用,第一人称的应用开始增多。但在研发方面面临不同的挑战,例如,图像模糊、视觉混乱、遮挡更严重等,给视觉模型的训练带来重大挑战。 一方面,人工标注真实第一视角数据集,来培训深度学习模型的成本和难度都很高。另一…

Java 泛型

优质博文:IT-BLOG-CN 一、为什么要有泛型 【1】解决元素存储的安全性问题。 【2】解决获取数据元素时,需要类型强转的问题。 【3】可以统一数据类型,便于操作。 【4】将运行时的异常提前到了编译时,提高了效率。 【5】实现代码的…

Day20_网络编程(软件结构,网络编程三要素,UDP网络编程,TCP网络编程)

文章目录 Day20 网络编程学习目标1 软件结构2 网络编程三要素2.1 IP地址和域名1、IP地址2、域名3、InetAddress类 2.2 端口号2.3 网络通信协议1、OSI参考模型和TCP/IP参考模型2、UDP协议3、TCP协议 2.4 Socket编程 3 UDP网络编程3.1 DatagramSocket和DatagramPacket1、Datagram…

关于地址引用与值引用的坑

List<UserInfo> userInfoList new List<UserInfo>(); List<UserInfo> userInfoList_new new List<UserInfo>(userInfoList);userInfoList_new 与userInfoList 指的是相同的内存吗&#xff1f; 答&#xff1a; 在C#中&#xff0c;userInfoList_new …

小世界网络:直径、分形、同配性

1.小世界网络特点 —— 网络直径接近于网络中节点数量的自然对数 2.小世界分形网络 —— 移除弱链接的小世界网络 3.同配性分析 —— Pearson相关系数、邻居相关度 在宏观层面上&#xff0c;关注平均度、度分布和聚类等全局结构特征的影响。更高的平均度被认为会导致更…

Zookeeper简介及选举机制

1.概述 Zookeeper是一个开源的&#xff0c;分布式的&#xff0c;为分布式框架&#xff08;如下图中的Hadoop和Hive&#xff09;提供协调服务的Apache项目。 工作机制&#xff1a;基于观察者设计模式的分布式服务管理框架&#xff0c;负责存储和管理数据&#xff0c;接受观察者…

[算法沉淀记录] 排序算法 —— 归并排序

排序算法 —— 归并排序 算法介绍 归并排序是一种分治算法&#xff0c;由约翰冯诺伊曼在1945年发明。它的工作原理是将未排序的列表划分为n个子列表&#xff0c;每个子列表包含一个元素(包含一个元素的列表被认为是有序的)&#xff0c;然后重复合并子列表以生成新的有序子列表…

ClickHouse 指南(三)最佳实践 -- 稀疏主索引

在ClickHouse主索引的实用介绍 ClickHouse release 24.1, 2024-01-30 1、简介 在本指南中&#xff0c;我们将深入研究ClickHouse索引。我们将详细说明和讨论: ClickHouse中的索引与传统的关系数据库管理系统有何不同ClickHouse是如何构建和使用表的稀疏主索引的什么是在Clic…

JavaScript原型继承与面向对象编程思想

原型继承与面向对象编程思想 在JavaScript中&#xff0c;原型(prototype)、构造函数(constructor)和实例对象(instance)是面向对象编程中的重要概念&#xff0c;并且它们之间存在着紧密的关系。 原型(prototype)&#xff1a;原型是JavaScript中对象之间关联的一种机制。每个Ja…

js使用import到本js文件中的函数时报错 Error [ERR_MODULE_NOT_FOUND]: Cannot find module

node:internal/process/esm_loader:97internalBinding(errors).triggerUncaughtException(^Error [ERR_MODULE_NOT_FOUND]: Cannot find module D:\桌面\Pagesizedetection\lib\screensize imported from D:\桌面\Pagesizedetection\index.js Did you mean to import ../lib/sc…

网页数据的存储--存储为文本文件(TXT、JSON、CSV)

用解析器解析出数据后&#xff0c;接下来就是存储数据了。数据的存储有多种多样&#xff0c;其中最简单的一种是将数据直接保存为文本文件&#xff0c;如TXT、JSON、CSV等。这里就介绍将数据直接保存为文本文件。 目录 一、Python存储数据的方法 1、 文件读取 2、 文件写入…

MFC实现拖动文件到控件

1、继承需要实现的拖动功能的控件。 2、定义一个消息将拖动事件转发到窗口上执行。&#xff08;非必须&#xff0c;但是我们一般的逻辑都在主窗口上&#xff09; 3、添加继承控件的消息处理函数 ON_WM_DROPFILES void CXXX::OnDropFiles(HDROP hDropInfo) { CWnd *topW…

【Logback】Logback 日志框架的架构

目录 1、Logger&#xff08;记录器&#xff09; &#xff08;1&#xff09;有效级别和级别继承 &#xff08;2&#xff09;日志打印和日志筛选 &#xff08;3&#xff09;记录器命名 2、Appenders&#xff08;追加器&#xff09; 3、Layouts&#xff08;布局&#xff09;…

npm install 失败,需要node 切换到 对应版本号

npm install 失败 原本node 的版本号是16.9&#xff0c;就会报以上错误 node版本问题了&#xff0c;我切到这个版本&#xff0c;报同样的错。降一下node&#xff08;14.18&#xff09;版本就好了 具体的方法&#xff1a;&#xff08;需要在项目根目录下切换&#xff09; 1. …

泰山派学习笔记(二)一步一步编译SDK文件

上一节&#xff0c;我们安装了基于虚拟机的ubuntu系统&#xff0c;并且建立了samba服务打通了win10和ubuntu系统中的文件传输。本节课我们继续对立创官方提供的SDK文件进行编译&#xff0c;学习编译的方法。引用官方的话&#xff1a;如果只想下载别人编译好的固件并且做一些应用…