本文主要解析一下nginx ngx_http_proxy_module中的cache相關配置參數。html
名稱 | 默認配置 | 做用域 | 官方說明 | 中文解讀 | 模塊 |
---|---|---|---|---|---|
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; } } }