詳解ngx_cache_purge _proxy_cache指令使用
1. proxy_cache 指令
該指令用于配置一塊公用的內存區(qū)域的名稱,該區(qū)域可以存放緩存的索引數(shù)據(jù)。這些數(shù)據(jù)在Nginx服務器啟動時由緩存索引重建進程負責建立,在Nginx服務器的整個運行過程中由緩存管理進程負責定時檢測過期數(shù)據(jù),檢索等管理工作。
proxy_cache zone | off;
zone,設置的用于存放緩存索引的內存區(qū)域的名稱。
off,關閉proxy_cache 功能,是默認的設置。
2. proxy_cache_bypass指令
該指令用于配置Nginx服務器向客戶端發(fā)送響應數(shù)據(jù)時,不從緩存中獲取的條件。這些條件支持使用Nginx 配置的常用變量。
proxy_cache_bypass string …;
string為條件變量,支持設置多個,當至少有一個字符串指令不為空或者不等于О時,響應數(shù)據(jù)不從緩存中獲取。
看一個例子: proxy_cache _bypass $cookie_nocache $arg nocache $Sarg_comment
$http_pragma $http.authorization;
其中,Scookie_nocache、Sarg_nocache、Sarg_comment、Shttp_pragma
和Shttp_authorization 都是Nginx配置文件的變量,
3. proxy_cache_key指令
該指令用于設置Nginx服務器在內存中為緩存數(shù)據(jù)建立索引時使用的關鍵字
proxy cache key string;
string為設置的關鍵字,支持變量。
如果我們希望緩存數(shù)據(jù)包含服務器主機名稱等關鍵字,則可以將該指令設置為:
proxy_cache_key “s c h e m e schemeschemehost$request”;
4. proxy_cache_lock指令
該指令用于設置是否開啟緩存的鎖功能。在緩存中,某些數(shù)據(jù)項可以同時被多個請求返回的響應數(shù)據(jù)填充。開啟該功能后,Nginx服務器同時只能有一個請求填充緩存中的某一數(shù)據(jù)項,這相當于給該數(shù)據(jù)項上鎖,不允許其他請求操作。其他的請求如果也想填充該項,必須等待該數(shù)據(jù)項的鎖被釋放。這個等待時間由
proxy_cache_lock_timeout 指令配置。
proxy_cache_lock on | off;
默認情況下為關閉
5. proxy_cache_lock_timeout指令
該指令用于設置緩存的鎖功能開啟以后鎖的超時時間。具體細節(jié)參見proxy_cache_lock 指令的相關內容
proxy cache_ lock_timeout time;
其中,time為設置的時間,默認為5s。
6. proxy_cache_min_uses指令
該指令用于設置客戶端請求發(fā)送的次數(shù),當客戶端向被代理服務器發(fā)送相同請求達到該指令設定的次數(shù)后,Nginx服務器才對該請求的響應數(shù)據(jù)做緩存。合理設置該值可以有效地降低硬盤上緩存數(shù)據(jù)的數(shù)量,并提高緩存的命中率。
proxy_cache_min_uses number;
其中,number為設置的次數(shù)。默認設置為1。
7. proxy_cache_path指令
該指令用于設置Nginx服務器存儲緩存數(shù)據(jù)的路徑以及和緩存索引相關的內容
proxy_cache_path [levels=levels] keys_zone=name:sizel [inactive=time1] [max_size=size2][loader_files=number] [loader_sleep=time2][loader_threshold-time3];
- path,設置緩存數(shù)據(jù)存放的根路徑,該路徑應該是預先存在于磁盤上的。levels,設置在相對于path指定目錄的第幾級hash目錄中緩存數(shù)據(jù)。
- levels=1:表示一級hash目錄;levels=1:2,表示兩級,依次類推。目錄的名稱是基于請求URL通過哈希算法獲取到的。
- name:sizel,Nginx服務器的緩存索引重建進程在內存中為緩存數(shù)據(jù)建立索引,這一對變量用來設置存放緩存索引的內存區(qū)域的名稱和大小。
- timel,設置強制更新緩存數(shù)據(jù)的時間,當硬盤上的緩存數(shù)據(jù)在設定的時間內沒有被訪問時,Nginx服務器就強制從硬盤上將其刪除,下次客戶端訪問該數(shù)據(jù)時重新緩存。該指令默認設置為10s。
- size2、設置硬盤中緩存數(shù)據(jù)的大小限制。我們知道,硬盤中的緩存源數(shù)據(jù)由Nginx服務器的緩存管理進程進行管理,當緩存的大小超過該變量的設置時,緩存管理進程將根據(jù)最近最少被訪問的策略刪除緩存。
- number,設置緩存索引重建進程每次加載的數(shù)據(jù)元素的數(shù)量上限。在重建緩存索引的過程中,進程通過一系列的遞歸遍歷讀取硬盤上的緩存數(shù)據(jù)目錄及緩存數(shù)據(jù)文件,對每個數(shù)據(jù)文件中的緩存數(shù)據(jù)在內存中建立對應的索引,我們稱每建立一個索引為加載一個數(shù)據(jù)元素。進程在每次遍歷過程中可以同時加載多個數(shù)據(jù)元素,該值限制了每次遍歷中同時加載的數(shù)據(jù)元素的數(shù)量。默認設置為100。
- time2,設置緩存索引重建進程在一次遍歷結束、下次遍歷開始之間的暫停時長。默認設置為50ms.
- time3,設置遍歷一次磁盤緩存源數(shù)據(jù)的時間上限。默認設置為200ms
該指令設置比較復雜,一般需要設置前面三個指令的情形比較多,后面的幾個變量與Nginx服務器緩存索引重建進程及管理進程的性能相關,一般情況下保持默認設置就可以了。我們來看幾個簡單的配置實例:
proxy_cache path /nginx/cache/a levels=1 keys_zone=a:10m; proxy_cache_path /nginx/cache /b levels-2:2 keys_zone=b:100m; proxy _cache_path /nginx/cache/c levels=1:1:2 keys_zone=c:1000m;
8. proxy_cache_use_stale指令
如果Nginx在訪問被代理服務器過程中出現(xiàn)被代理的服務器無法訪問或者訪問錯誤等現(xiàn)象時,Nginx服務器可以使用歷史緩存響應客戶端的請求,這些數(shù)據(jù)不一定和被代理服務器上最新的數(shù)據(jù)相一致,但對于更新頻率不高的后端服務器來說,Nginx服務器的該功能在一定程度上能夠為客戶端提供不間斷訪問。該指令用來設置一些狀態(tài),當后端被代理的服務器處于這些狀態(tài)時,Nginx服務器啟用該功能。
該指令可以支持的狀態(tài)如語法結構中所示。
proxy_cache_use_stale error| timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_404 | off..·:
9. proxy_cache_valid指令
該指令可以針對不同的HTTP響應狀態(tài)設置不同的緩存時間
proxy_cache_valid [code…] time;
- code,設置HTTP響應的狀態(tài)代碼。該指令可選,如果不設置,Nginx服務器只為HTTP狀態(tài)代碼為200、301和302的響應數(shù)據(jù)做緩存。可以使用“any”表示緩存所有該指令中未設置的其他響應數(shù)據(jù)。
- time,設置緩存時間。看幾個例子:
proxy_cache_valid 200 302 10m; proxy_cache_valid 301 1h; proxy_cache_valid any 1m;
上述例子中,對返回狀態(tài)為200和302的響應數(shù)據(jù)緩存10分鐘,對返回狀態(tài)為301的響應數(shù)據(jù)緩存1小時,對返回狀態(tài)為非200、302和301的響應數(shù)據(jù)緩存1分鐘。
10. proxy_no_cache
該指令同于配置在什么情況下不使用cache功能
proxy_no_cache $string…;
string 可以是一個或者都多個變量。當string的值不為空或者不為0時,不啟用cache功能
11. proxy_store 指令
該指令配置是否在本地磁盤緩存來自被代理服務器的響應數(shù)據(jù)。這是Nginx服務器提供的另一種緩存數(shù)據(jù)的方法,但是該功能相對 Proxy
Cache簡單一些,它不提供緩存過期更新、內存索引建立等功能,不占用內存空間,對靜態(tài)數(shù)據(jù)的效果比較好。
proxy_store on | off | string;
- on | off,設置是否開啟ProxyStore功能。如果使用變量on,功能開啟,緩存文件會存放到alias指令或root指令設置的本地路徑下。默認設置為off。
- string,自定義緩存文件的存放路徑。如果使用變量string,Proxy Store功能開啟,緩存文件會存放到指定的本地路徑下。
Proxy Store方法多使用在被代理服務器端發(fā)生錯誤的情況下,用來緩存被代理服務器的響應數(shù)據(jù)。
12. proxy_store_access指令
該指令用于設置用戶或用戶組對Proxy Store緩存的數(shù)據(jù)的訪問權限
proxy_store_access users:permissions …
- users,可以設置為user、group或者all。
- permissions,設置權限。
有關Proxy Store方法的使用,我們通過官方給出的實例加深理解,在該實例中筆者通過注釋對配置做了說明:
location /images/
{
? root /data/www;
? error_page 404 = /fetch$uri; ? ? ?#定義了404錯誤的請求頁面
}
location /fetch/ ? ? ? ? ? ? ? ? ? ?#匹配404錯誤時的請求
{
? proxy_pass http://backend;
? proxy_store on; ? ? ? ? ? ? ? ? ? #開啟Proxy store方法
? proxy_store_access user:rw group:rw all:r;
? root/data/www; ? ? ? ? ? ? ? ? ? ?#緩存數(shù)據(jù)的路徑
}到此這篇關于詳解ngx_cache_purge _proxy_cache指令使用的文章就介紹到這了,更多相關ngx_cache_purge _proxy_cache指令內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Nginx反向代理出現(xiàn)502?Bad?Gateway問題解決
在配置Nginx反向代理時遇到502 Bad Gateway錯誤,經(jīng)過排查發(fā)現(xiàn)是SSL握手問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-10-10
nginx?添加http_stub_status_module模塊
本文主要介紹了nginx?添加http_stub_status_module模塊,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-05-05
通過lua來配置實現(xiàn)Nginx服務器的防盜鏈功能
這篇文章主要介紹了通過lua來配置實現(xiàn)Nginx服務器的防盜鏈功能的方法,這里主要講解生成鏈接的Nginx配置,需要的朋友可以參考下2016-01-01

