zoukankan      html  css  js  c++  java
  • nginx 的 proxy_cache 缓存配置

    开头:某个项目涉及到 视频切片下载到本地,然后提供服务给客户端。一个视频有多个文件,存储在本地路径下。当客户端请求的视频在本地没有就会回源,

       回源拿到的视频文件再返回给客户端,同时在本地缓存一份,提供给下一个相同请求的用户。

       可参考另一位大佬的讲解 https://blog.csdn.net/dengjiexian123/article/details/53386586/ 

                  https://blog.csdn.net/f529352479/article/details/51445320

                  https://blog.csdn.net/hero00e/article/details/52858196  缓存的指令 、结构体

      本文结合项目关于缓存的使用情况来展开。

    1. 配置 proxy_cache 模块

      在 nginx.conf 文件添加 如下代码:

    proxy_cache_path  /mnt/zxdfs/service/ottcache/cachevod levels=1:2 keys_zone=cachefile:100m inactive=180d max_size=148g limitedexpiredfiles=2 expiredtimeinterval=2300-1900 expired_percent=95;

      代码说明:
      proxy_cache_path 缓存文件路径

      levels                     设置缓存文件目录层次;levels=1:2 表示两级目录

      keys_zone             设置缓存名字和共享内存大小.【在使用的地方要使用相同的变量名】

      inactive                 在指定时间内没人访问则被删除

      max_size               最大缓存空间,如果缓存空间满,默认覆盖掉缓存时间最长的资源。

      这些是默认有的配置,当然可以根据自己业务的需求对缓存有其他新增的配置说明。

      当配置好之后,重启nginx,如果不报错,则配置的proxy_cache会生效

    2. 使用 proxy_cache 

      使用proxy_cache ,需要在另一个location配置使用条件:

    location /internal_proxyfile
    {
        internal;
        sendfile off;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Connection "keep-alive";
        proxy_set_header Accept-Encoding "";
    
        proxy_cache_use_stale error timeout updating http_502 http_504;
            #此处是托底配置,旧的总比出错强,当nginx请求后台服务器报错的时候,
            #如果返回配置的错误响应码,nginx则直接取缓存文件中的旧数据返回给用户,托底使用必选配置。
    
        proxy_cache_lock off;
            #缓存并发锁,当nginx缓存没有命中的时候只有一个请求回源tomcat请求数据,其他请求会等待。非必选配置。
            #意思就是 当多个请求传递到此配置时即他们的proxy_cache_key 是一样的,那多个请求只有一个才会真正回源【即到真正应用阶段生成响应内容】,
            #最后将响应内容 添加到 cache ,然后其他请求 就从cache 获取数据,或直到超时。
    proxy_cache_lock_timeout 20s; #等待锁超时时间设置 非必选配置。 proxy_ignore_headers Cache
    -Control Expires; proxy_cache cachefile; # 配置了缓存空间名称,具体可以看节点的 proxy_disk.conf ,不同的请求对应不同的空间名称。 proxy_cache_valid 200 206 304 180d; # 根据响应码设置缓存时间,超过这个时间即使缓存文件中有缓存数据,nginx也会回源请求新数据。 proxy_cache_key $cdn_cid; proxy_cache_prefix_dir $cpid_cid; proxy_pass $upstream_url;
         # 代理后转发的路径 }

      在第一次访问到达该location时候,本地是没有缓存的,会在最后经过 proxy_pass 代理的路径处理完在本地【即 proxy_cache 配置的缓存路径缓存一份】;

      同一个url第二次访问,再次到达该location,proxy_cache 会在自己的缓存路径找到对应的缓存文件,就会直接返回给客户端,无需向后续的代理路径转发。

      

  • 相关阅读:
    MIT python 第二课第四十分钟 取最小值的例子
    Python IDLE快捷键 汇总
    5、Hibernate的延迟加载
    4、Hibernate三种状态的讲解
    3、Hibernate实现简单的CRUD操作
    1、hibernate的简单配置
    2、hibernate的 save 保存失败的解决方法
    JavaWeb开发中关于分页的实现
    常见的网页布局二
    常见的网页布局一
  • 原文地址:https://www.cnblogs.com/chenpython123/p/11974576.html
Copyright © 2011-2022 走看看