Nginx高级技术: 代理缓存配置

一、缓存说明

        Nginx缓存,Nginx 提供了一个强大的反向代理和 HTTP 服务器功能,同时也是一个高效的缓存服务器。一般情况下系统用到的缓存有以下三种:

1、服务端缓存:缓存存在后端服务器,如 redis。

2、代理缓存:缓存存储在代理服务器或中间件,内容从后端服务器获取,保存在本地。如Nginx

3、客户端缓存:缓存在浏览器 ,不需要从服务器获取最新的,浏览器就会直接使用本地缓存。

二、环境配置

  配置 Nginx 缓存的基本步骤:

  1. 安装 Nginx 和必要的缓存模块(通常默认安装)。

  2. 编辑 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf )。

  3. 在 httpserver 或 location 块中配置缓存参数

三、场景说明

场景一:控制上游服务器节点缓存

        Nginx通过proxy_cache来实现缓存,而proxy_cache只有在Proxy Buffer机制开启的情况下Proxy Cache的配置才会发挥作用。

                  proxy_cache_path   /usr/local/cache    #缓存地址
                  levels=1:2    #目录分级
                  keys_zone=test_cache:10m     #开启的keys空间名字:空间大小(1m可以存放8000个key)
                  max_size=10g     #目录最大大小(超过时,不常用的将被删除)
                  inactive=60m     #60分钟内没有被访问的缓存将清理
                  use_temp_path=off;   #是否开启存放临时文件目录,关闭默认存储在缓存地址                                        
            server {
        #使用缓存
        location / {
                        proxy_cache test_cache;    #开启缓存对应的名称,在keys_zone命名好
                        proxy_cache_valid 200 304 12h;    #状态码为200 304的缓存12小时
                        proxy_cache_valid any 10m;    #其他状态缓存10分钟
                        proxy_cache_key $host$uri$is_args$args;    #设置key值
                        add_header Nginx-Cache "$upstream_cache_status";
                       }

场景二:控制浏览器缓存expires配置,expires 命令控制一下浏览器的缓存,主要是针对一些静态资源。

  location ~ .*.(jpg|jpeg|gif|png)$ {
         # 设置图片缓存过期时间,允许浏览器缓存该资源10s
           expires 10s;
    # @表示在指定时间点后缓存过期
          expires @22h30m;
    # 在之前1h就已经过期了,既不进行缓存
          expires -1h;
    # 有缓存,但不使用缓存
          expires epoch;
    # 关闭缓存,默认为关闭
           expires off;
    # 最大时间,永不过期
            expires max;
 } 

         # 匹配静态目录
location ~^ /(|css|js) / {
             expires 2h;
        }
       

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

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

相关文章

【Leetcode】top 100 矩阵

73 矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 方法一:拷贝出一个同样大小的矩阵,根据拷贝矩阵在原矩阵上修改元素; 空间复杂度O(mn) 方法二&…

数据分析-Pandas的直接用Matplotlib绘图

数据分析-Pandas的直接用Matplotlib绘图 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表…

【LeetCode热题100】23. 合并 K 个升序链表(链表)

一.题目要求 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 二.题目难度 困难 三.输入样例 示例 1: 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,…

在react中使用tailwindcss

安装tailwind css npm i -D tailwindcssnpm:tailwindcss/postcss7-compat postcss^7 autoprefixer^9安装 CRACO 由于 Create React App 不能让您覆盖原生的 PostCSS 配置,所以我们还需要安装 CRACO 才能配置 Tailwind。 npm install craco/craco配置CRACO 在项目根…

【Algorithms 4】算法(第4版)学习笔记 18 - 4.4 最短路径

文章目录 前言参考目录学习笔记0:引入介绍1:APIs1.1:API:加权有向边1.2:Java 实现:加权有向边1.3:API:加权有向图1.4:Java 实现:加权有向图1.5:AP…

android studio设置flutter和dart的sdk配置

提示没有配置dart sdk的时候,其实只需要配置一下flutter的sdk就可以了,因为flutter的安装包里面包含了dart的sdk: 按照提示选中这个flutter的安装包路径就可以了: 并且需要开启windows的开发者开关:start ms-settings:…

Rancher操作手册(v2.7.5-rc1)

1.登录 访问地址:10.66.55.132使用账号和密码登录。初始的页面是英文版本,可以点击左下方改为简体中文 登录成功后可以看到现有的集群。右上角可以进行新集群的创建和导入已有集群。点击箭头所指的蓝色集群名称可以进入集群。 2.集群仪表盘 进入到集…

文字弹性跳动CSS3代码

文字弹性跳动CSS3代码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面,重定向这个界面 下载地址 文字弹性跳动CSS3代码

神经网络中激活函数的绘制——阶跃函数、sigmoid函数、ReLU函数

一、阶跃函数 import numpy as np import matplotlib.pylab as plt def step_function(x):return np.array(x>0)x np.arange(-5.0,5.0,0.1) y step_function(x) plt.plot(x, y) plt.ylim(-0.1, 1.1) plt.show() 二、sigmoid函数 import numpy as np import matplotlib.p…

Java多线程学习(一)

多线程学习(二):http://t.csdnimg.cn/Q8Koc 目录 1、什么是多线程 2、如何创建多线程(多个方法) 方法一:继承Thread类创建线程 方法二:实现Runnable接口创建线程 方法三、实现Callable接口…

Day46-http和www基础1

Day46-http和www基础1 1. 用户访问网站基本流程2. DNS系统解析基本流程3. DNS功能4. DNS树形结构介绍5. DNS解析流程(核心)6. 查看生产【授权DNS】并设置解析7. dig查看实际DNS解析8. 企业要不要搭建DNS服务器?9. HTTP协议10. HTTP协议版本11…

Kubernetes 编排系统

Kubernetes 编排系统 Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它提供了一种灵活而强大的方式来管理容器化应用程序的生命周期,包括自动化部署、扩展、负载均衡、故障恢复等功能…

16、技巧之九: 修改参数,如何让表格翻页滚动到底部?【Selenium+Python3网页自动化总结】

1、问题提出 在网页配置参数时,输入参数名称搜索,搜出来的同名参数结果有多个,分布在一个表格的不同行,表格是动态加载的,需要滚动鼠标才能把所出参数找出来。用selenium怎么实现这种参数修改? 2、网页元素…

计算机网络 |内网穿透

其实内网穿透,也挺好玩的,如果在大学的时候,那个时候讲计算机网络的老师能横向延展,估计课也会更有趣不少,本来计算机网络这门课就是计算机课程中可玩性最搞的。 只能说,怪可惜的 回到正题,内网…

知名Web3投资基金a16z合伙人Jane Lippencott确认出席Hack.Summit() 2024区块链开发者大会

在区块链技术的风起云涌和Web3生态的蓬勃发展中,知名a16z Crypto的合伙人Jane Lippencott已确认出席即将于2024年4月9日至10日在香港数码港举行的Hack.Summit() 2024区块链开发者大会。作为亚洲首次举办的Hack.Summit(),此次大会将为全球区块链开发者及业…

【JavaScript知识点】预解析、作用域、数据类型、数组常用方法、字符串常用方法

JS知识点 1.预解析2.作用域:一个变量可以生效的范围,这个变量的使用范围就是作用域3.作用域访问规则4.我们的存储空间分成两种栈和堆5.数据类型分为基本数据类型和复杂数据类型6.冒泡排序和选择排序7.数组常用方法8.字符串常用方法9.json 是一种轻量级的数据交换格式…

计算机网络——物理层(数据交换方式)

计算机网络——数据交换方式 提高数据交换方式的必要性电路交换电路交换原理电路交换的阶段建立阶段通信阶段和连接拆除阶段 电路交换的优缺点报文交换什么是报文报文交换的阶段报文交换的优缺点 分组交换分组交换的阶段分组交换的优缺点 数据交换方式的选择数据报方式数据报方…

使用vue3 开发H5 ,需要注意的部分点

以下内容为使用vue3 开发H5 中碰到的几个点,个人愚见。不定期进行补充。 框架端 1. 安装 vite插件 vitejs/plugin-legacy 。 npm add -D vitejs/plugin-legacy使用: 在vite.config.js 中引入 import legacy from vitejs/plugin-legacy; export defau…

相机拍照与摄影学基础

1.相机拍照 相机可能形状和大小不同,但基本功能相同,包括快门速度、光圈和感光度,这些是摄影的通用概念。即使是一次性相机也是基于这三个理念工作的。不同类型相机在这三个概念上的唯一区别是你可以控制这些功能的程度。这三个参数被称为相…

Redis在缓存方面的应用有哪些?如何避免缓存击穿、缓存雪崩等问题?Redis如何实现分布式锁?有哪些注意事项?

Redis在缓存方面的应用有哪些?如何避免缓存击穿、缓存雪崩等问题? Redis在缓存方面的应用广泛且多样,包括但不限于以下几个方面: 页面缓存:Redis可以将Web页面的内容片段,包括HTML、CSS和图片等静态数据&a…