nginx proxy cache配置参数解读

本文主要解析一下nginx ngx_http_proxy_module中的cache相关配置参数。

proxy_cache

名称

默认配置

作用域

官方说明

中文解读

模块

proxy_cache

proxy_cache off;

http, server, location

Defines a shared memory zone used for caching. The same zone can be used in several places. Parameter value can contain variables (1.7.9). The off parameter disables caching inherited from the previous configuration level.

设置是否开启对后端响应的缓存,如果开启的话,参数值就是zone的名称,比如proxy_cache mycache

ngx_http_proxy_module

proxy_cache_valid

没有默认值,实例如proxy_cache_valid 200 302 10m;

http, server, location

Sets caching time for different response codes.

针对不同的response code设定不同的缓存时间,如果不设置code,默认为200,301,302,也可以用any指定所有code

ngx_http_proxy_module

proxy_cache_key

proxy_cache_key $scheme$proxy_host$request_uri;

http, server, location

Defines a key for caching

给缓存设定key,默认值相当于proxy_cache_key $scheme$proxy_host$uri$is_args$args;

ngx_http_proxy_module

proxy_cache_path

没有默认值,实例proxy_cache_path /var/cache levels=1:2 keys_zone=imgcache:100m inactive=2h max_size=1g;

http

Sets the path and other parameters of a cache. Cache data are stored in files. The file name in a cache is a result of applying the MD5 function to the cache key. The levels parameter defines hierarchy levels of a cache: from 1 to 3, each level accepts values 1 or 2.

指定缓存存储的路径,文件名为cache key的md5值,然后多级目录的话,根据level参数来生成,比如levels=1:2:3,第一个目录名取md5值的倒数第一个值,第二个目录名取md5值的第2和3个值,第三个目录名取md5值的第4,5,6个值;key_zone参数用来指定在共享内存中缓存的元数据的名称和内存大小,比如keys_zone=imgcache:100m,所有的缓存查找首先经过这里查找元数据,如果命中再去文件系统查找相应的缓存 ;inactive用来指定缓存没有被访问超时移除的时间,默认是10分钟,也可以自己指定比如inactive=2h ;max_size 用来指定缓存的最大值,超过这个值则会自动移除最近最少使用的缓存

ngx_http_proxy_module

proxy_cache_bypass

没有默认值

http, server, location

Defines conditions under which the response will not be taken from a cache. If at least one value of the string parameters is not empty and is not equal to “0” then the response will not be taken from the cache.

指定哪些响应在某些值不为空或不为0的情况下不走缓存,比如proxy_cache_bypass $http_pragma $http_authorization;

ngx_http_proxy_module

proxy_cache_min_uses

proxy_cache_min_uses 1;

http, server, location

Sets the number of requests after which the response will be cached.

指定在多少次请求之后才缓存响应内容

ngx_http_proxy_module

proxy_cache_use_stale

proxy_cache_use_stale off;

http, server, location

Determines in which cases a stale cached response can be used during communication with the proxied server. The directive’s parameters match the parameters of the proxy_next_upstream directive.

指定在后端服务器在返回什么状态码的情况下可以使用过期的缓存,比如proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;

ngx_http_proxy_module

proxy_cache_lock

proxy_cache_lock off;

http, server, location

When enabled, only one request at a time will be allowed to populate a new cache element identified according to the proxy_cache_key directive by passing a request to a proxied server. Other requests of the same cache element will either wait for a response to appear in the cache or the cache lock for this element to be released, up to the time set by the proxy_cache_lock_timeout directive.

默认不开启,开启的话则每次只能有一个请求更新相同的缓存,其他请求要么等待缓存有数据要么限时等待锁释放;nginx 1.1.12才开始有

ngx_http_proxy_module

proxy_cache_lock_timeout

proxy_cache_lock_timeout 5s;

http, server, location

Sets a timeout for proxy_cache_lock. When the time expires, the request will be passed to the proxied server, however, the response will not be cached.

等待缓存锁超时之后将直接请求后端,结果不会被缓存 ; nginx 1.1.12才开始有

ngx_http_proxy_module

实例

http {
    # we set this to be on the same filesystem as proxy_cache_path
    proxy_temp_path /usr/local/nginx/proxy_temp;
    # good security practice dictates that this directory is owned by the
    # same user as the user directive (under which the workers run)
    proxy_cache_path /usr/local/nginx/proxy_temp keys_zone=CACHE:10m levels=1:2 inactive=6h max_size=1g;

    server {
        location / {
            # using include to bring in a file with commonly-used settings
            include proxy.conf;
            # referencing the shared memory zone defined above
            proxy_cache CACHE;
            proxy_cache_valid any 1d;
            proxy_cache_bypass $http_pragma $http_authorization;
            proxy_cache_min_uses 3;
            proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
            proxy_pass http://upstream;
        }
    }
}

doc

  • ngx_http_proxy_module
  • nginx反向代理缓存配置
  • Understanding the nginx proxy_cache_path directive

原文发布于微信公众号 - 码匠的流水账(geek_luandun)

原文发表时间:2018-01-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏linux、Python学习

Shell的18条常用命令整理

Linux上的文件以.开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示一般文件名外,连隐藏文件也会显示出来。

9600
来自专栏Jerry的SAP技术分享

SAP云平台的Document Service

SAP云平台以微服务的方式提供了Document的CRUD(增删改查)操作。该微服务基于标准的CMIS协议(Content Management Interop...

42040
来自专栏xcywt

《程序员的自我修养》第二章学习笔记

第二章 编译和链接 2.1被隐藏了的过程 我们知道,一个程序由源代码到可执行文件往往由这几步构成: 预处理(Prepressing)-> 编译(Compilat...

20350
来自专栏蓝天

log4j日志文件路径设置

假设有如下标准化的目录结构: $HOME |-- log |-- conf |-- bin |-- lib |-- data jar包放在l...

12630
来自专栏北京马哥教育

Shell的18条常用命令整理

? 作者 | junmail 来源 | CSDN社区 云豆贴心提醒,本文阅读时间8分钟,文末有秘密! 1、 ls: 类似于dos下的dir命令 ...

41040
来自专栏应兆康的专栏

每天一个Linux命令(1)—— ls

ls ls命令用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。 语法 ls(选项)(参数) ...

381100
来自专栏IT派

Python 的异步 IO:Asyncio 简介

所谓「异步 IO」,就是你发起一个 IO 操作,却不用等它结束,你可以继续做其他事情,当它结束时,你会得到通知。

13630
来自专栏我的技术专栏

Linux编译工具:gcc入门

18140
来自专栏蓝天

为什么ps中CPU占用率会有超出%100的现象?

前面的关于ps中的%CPU的含义一文已经介绍了CPU占用率的含义,那么为什么有时会在ps的输出中看到CPU占用率超出%100的现象呢?我们知道在/proc目录下...

13520
来自专栏应兆康的专栏

Python Web - Flask笔记8

CSRF(Cross Site Request Forgery)跨站域请求伪造是一种网络攻击方式。

12310

扫码关注云+社区

领取腾讯云代金券