Nginx缓存在服务端 代理和客户端的区别深入探索

 更新时间:2023年10月23日 14:15:05   作者:bug生产者  
这篇文章主要介绍了Nginx缓存在服务端 代理和客户端的区别深入探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Nginx缓存

一般情况下系统用到的缓存有三种

  • 服务端缓存:缓存存在后端服务器,如redis
  • 代理缓存:缓存存储在代理服务器或中间件,内容从后端服务器获取,保存在本地
  • 客户端缓存:缓存在浏览器

[ ] 什么时候会出现304? 服务器响应中包含有ETaglast-modified,浏览器下次去请求时会发送这两个标签,直接返回304 Not Modified来告诉浏览器该资源没有修改,不需要从服务器获取最新的,浏览器就会直接使用本地缓存

Nginx使用的缓存属于代理缓存

cache配置

Nginx通过proxy_cache来实现缓存。Buffer(缓冲)主要用于传输效率不同步或者优先级不相同的设备之间传输数据,通过对一方数据进行临时存放,在统一发送的方式传递给另一方,以降低进程间的等待时间;Cache(缓存)主要用于将硬盘上已有的数据在内存中建立缓存数据,提高数据的访问效率。

而proxy_cache只有在Proxy Buffer机制开启的情况下Proxy Cache的配置才会发挥作用

相关配置

  • proxy_zone:zone | off 默认是off,即关闭proxy_cache功能,zone为用于存放缓存的内存区域名称,可以在http/server、location块内使用
  • proxy_cache_path: path [levels=levels] keys_zone-name:size [inactive=time] [max_size=size] 只能在http块内使用

    • path设置缓存数据存放的路径
    • levels设置目录层级,如levels=1:2,表示有两个子目录
    • keys_zone 设置内存zone的名称和大小,如keys_zone=my:10m
    • inactive设置缓存多长时间失效,当磁盘上的缓存数据在该时间段内没有被访问过,就会失效,数据将被删除,默认10s
    • max_size 设置硬盘中最多缓存多少数据,数据超出,则删除最少访问的数据
  • proxy_cache_methods GET HEAD POST 设置缓存哪些方法
  • proxy_cache_min_uses 1 设置缓存的最小使用次数
  • proxy_cache_valid code time 对不同的状态码缓存不同的时间
  • proxy_cache_key line 设置缓存的key值

示例

http {
    proxy_cache_path    /var/www/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";
        }
        #不使用缓存
        if ($request_uri ~ ^/(login|register) ) {    #当请求地址有login或register时
            set $nocache = 1;    #设置一个自定义变量为true
            }
            location / {
            proxy_no_cache $nocache $arg_nocache $arg_comment;
            proxy_no_cache $http_pragma $http_authoriztion;
            }
    }
}

expires配置

location ~ .*.(jpg|jpeg|gif|png)$ {
    # 设置图片缓存过期时间
    expires 1d;
} 
# 匹配静态目录
location ~^ /(|css|js) / {
    expires 2h;
}

响应会返回给浏览器Expires属性,展示的是过期时间,之后再次请求该资源时,如果没有超过响应返回的Expires时,则不需要向服务器访问,直接从缓存中获取

静态资源缓存

# 缓存zone levels表示缓存层级以及目录位数 keys_zone表示缓存内存大小 inactive有效期 max_size所占用的最大磁盘大小
proxy_cache_path /data/nginx/cache_ad levels=1:2 keys_zone=cache_cache_ad:100m inactive=7d max_size=200m;
server {
    location / {
      # 缓存zone
      proxy_cache cache_ad;
      # 缓存key  进行md5
      proxy_cache_key $host$uri$is_args$args;
      # 什么情况下进行缓存存储
      proxy_cache_valid 200 304 12h;
    }
}

以上就是Nginx缓存在服务端 代理和客户端的区别深入探索的详细内容,更多关于Nginx缓存服务端代理客户端的资料请关注脚本之家其它相关文章!

相关文章

  • Nginx http升级到https的完整步骤

    Nginx http升级到https的完整步骤

    这篇文章主要给大家介绍了关于Nginx http升级到https的完整步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用Nginx具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • Nginx反向代理后台报404遇到的解决方法

    Nginx反向代理后台报404遇到的解决方法

    Nginx反向代理404错误通常是由服务器配置不正确、文件路径不正确、文件权限不正确、文件名大小写不正确等,本文主要介绍了Nginx反向代理后台报404遇到的解决方法,感兴趣的可以了解一下
    2023-11-11
  • 利用nginx搭建RTMP视频点播、直播、HLS服务器

    利用nginx搭建RTMP视频点播、直播、HLS服务器

    本文主要介绍了利用nginx搭建RTMP视频点播、直播、HLS服务器,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Nginx使用mirror指令实现接口复制

    Nginx使用mirror指令实现接口复制

    Nginx中使用mirro指令可以方便地实现接口请求的复制,这个功能非常适合用于流量监控、数据收集或负载均衡,下面我们就来看看具体的用法吧
    2024-10-10
  • Nginx设置日志打印post请求参数的方法

    Nginx设置日志打印post请求参数的方法

    这篇文章主要介绍了Nginx设置日志打印post请求参数的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 配置Nginx出现403(Forbidden)静态文件加载不出来的解决方法

    配置Nginx出现403(Forbidden)静态文件加载不出来的解决方法

    本文主要介绍了配置Nginx出现403(Forbidden)静态文件加载不出来的解决方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • nginx模块stream配置的具体使用

    nginx模块stream配置的具体使用

    stream模块一般用于tcp/UDP数据流的代理和负载均衡,可以通过stream模块代理转发TCP消息,本文主要介绍了nginx模块stream配置的具体使用,感兴趣的可以了解一下
    2023-10-10
  • Linux下Tomcat+Nginx服务器环境安装配置的简明教程

    Linux下Tomcat+Nginx服务器环境安装配置的简明教程

    以Nginx作为反向代理再用Tomcat驱动Java Web程序是当今很流行的一种方案,那么这里我们就着眼于最基本的生产环境搭建,一起来看一下Linux下Tomcat+Nginx服务器环境安装配置的简明教程
    2016-05-05
  • 使用Nginx进行URL转发的配置案例

    使用Nginx进行URL转发的配置案例

    Nginx是一个高性能的Web服务器和反向代理服务器,它还可以用于URL转发,在本教学文章中,我们将从安装Nginx开始,逐步介绍配置步骤,并展示一个URL转发的案例,感兴趣的朋友可以参考下
    2023-09-09
  • nginx之从main函数开始了解配置文件处理及配置信息的读入过程

    nginx之从main函数开始了解配置文件处理及配置信息的读入过程

    这篇文章主要介绍了nginx之从main函数开始了解配置文件处理及配置信息的读入过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07

最新评论