NGINX通常作為應(yīng)用程序堆棧中的反向代理或負(fù)載平衡器部署,并具有一整套緩存功能
如何設(shè)置和配置基本緩存
只需要兩個指令即可啟用基本緩存:[proxy_cache_path](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path)和[proxy_cache](https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache)。該proxy_cache_path指令設(shè)置緩存的路徑和配置,proxy_cache指令激活它
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g
inactive=60m use_temp_path=off;
server {
# ...
location / {
proxy_cache my_cache;
proxy_pass http://my_upstream;
}
}
該proxy_cache_path指令的參數(shù)定義了以下設(shè)置:
- 緩存的本地磁盤目錄稱為/ path/ to/cache /。
-
levels在/ path/ to/cache /下設(shè)置一個兩級目錄層次結(jié)構(gòu)。在單個目錄中包含大量文件會降低文件訪問速度,因此我們建議對大多數(shù)部署使用兩級目錄層次結(jié)構(gòu)。如果levels未包含該參數(shù),NGINX會將所有文件放在同一目錄中。 -
keys_zone設(shè)置共享內(nèi)存區(qū)域,用于存儲緩存鍵和元數(shù)據(jù),例如使用計時器。將鍵的拷貝放入內(nèi)存可以使NGINX在不檢索磁盤的情況下快速決定一個請求是HIT還是MISS,這樣大大提高了檢索速度。。1 MB區(qū)域可以存儲大約8,000個密鑰的數(shù)據(jù),因此示例中配置的10 MB區(qū)域可以存儲大約80,000個密鑰的數(shù)據(jù)。 -
max_size設(shè)置緩存大小的上限(在本例中為10G字節(jié))。它是可選的; 不指定值允許緩存增長以使用所有可用磁盤空間。當(dāng)緩存大小達(dá)到限制時,稱為緩存管理器的進(jìn)程將刪除最近最少用于將緩存大小恢復(fù)到限制之下的文件。 -
inactive指定項目在未被訪問的情況下可以保留在緩存中的時間長度。在上面的例子中,如果一個文件在60分鐘之內(nèi)沒有被請求,則緩存管理將會自動將其在內(nèi)存中刪除,不管該文件是否過期。默認(rèn)值為10分鐘(10m)。非活動內(nèi)容與過期內(nèi)容不同。NGINX不會自動刪除緩存控件頭定義的已過期內(nèi)容(Cache-Control:max-age=120例如)。過期(陳舊)內(nèi)容僅在指定時間內(nèi)未被訪問時被刪除inactive。訪問過期內(nèi)容時,NGINX會從原始服務(wù)器刷新它并重置inactive計時器。 - NGINX首先將發(fā)往高速緩??存的文件寫入臨時存儲區(qū)域,該
use_temp_path=off指令指示NGINX將它們寫入將被高速緩存的相同目錄。我們建議您將此參數(shù)設(shè)置off為避免在文件系統(tǒng)之間進(jìn)行不必要的數(shù)據(jù)復(fù)制。use_temp_path在NGINX 1.7.10和NGINX Plus R6中引入。