1. 程式人生 > 實用技巧 >Nginx如何啟用proxy_cache快取配置

Nginx如何啟用proxy_cache快取配置

proxy_cache 是用於 proxy 模式(一般也可稱為反代)的快取功能。本文介紹其基本用法。

proxy_cache 在 Nginx 配置的 http 段、server 段(location 段)中分別寫入不同的配置。http 段中的配置用於定義 proxy_cache 空間,server 段中的配置用於呼叫 http 段中的定義,啟用對 server 的快取功能。

http 段

直接以本站的配置為例:

1 2 3 proxy_cache_path /home/nginx/proxy_cache/cache levels=1:2 keys_zone=proxycache:60m max_size=120m inactive=2h use_temp_path=on;
proxy_temp_path /home/nginx/proxy_cache/temp; proxy_cache_key$host$request_uri; # www.zjkweiqi.cn

  

其中:

proxy_cache_path

  1. /home/nginx/proxy_cache/cache:定義 proxy_cache 生成檔案的根路徑
  2. levels:預設所有快取檔案都放在上面指定的根路徑中,從而可能影響快取的效能。推薦指定為 2 級目錄來儲存快取檔案
  3. key_zone:這個的值是字串,可以隨意寫。用於在共享記憶體中定義一塊儲存區域來存放快取的 key 和 metadata(類似於使用次數),這樣 nginx 可以快速判斷一個 request 是否命中快取。1m 可以儲存 8000 個key
  4. max_size:最大 cache 空間。如果不指定,會使用掉所有 disk space。當達到 disk 上限後,會刪除最少使用的 cache
  5. inactive:記憶體中快取的過期檢查週期。示例配置中如果 2h 內都沒有被訪問,則不論狀態是否為 expired,都會清除快取。需要注意的是,inactive 和 expired 配置項的含義是不同的,expired 只是判斷過期時間,不會刪除快取;而 inactive 是直接刪除過期快取
  6. use_temp_path:如果為 off,則 nginx 會將快取檔案直接寫入指定的 cache 檔案中,而不使用 temp_path 指定的臨時儲存路徑

proxy_temp_path

  1. /home/nginx/proxy_cache/temp:定義 proxy_cache 生成臨時檔案的根路徑。此項在 use_temp_path=off 時不需填寫

proxy_cache_key

  1. hosthostrequest_uri:定義 proxy_cache 生成檔案的名稱。值可以為 Nginx 支援的變數和字串

server 段

同樣以本站配置為例進行說明:

1 2 3 4 5 6 7 8 9 proxy_cache proxycache; proxy_cache_valid 304 2h; proxy_cache_valid 403 444 24h; proxy_cache_valid 404 2h; proxy_cache_valid 500 502 2h; proxy_cache_use_stale invalid_header http_403 http_404 http_500 http_502; proxy_cache_lock on; proxy_cache_lock_timeout 5s; proxy_no_cache$proxynocache_atomxml$proxynocache_sitemapxml;

  

  1. proxy_cache:對應 http 段的 key_zone,是你定義的 proxy_cache 所使用的共享空間的名稱。我在上面示例中使用的名稱是“proxycache”
  2. proxy_cache_valid:對指定的 HTTP 狀態進行快取,並指定快取時間。可以自定義寫入多個配置項
  3. proxy_cache_stale:這個可以大大減少回源次數。因此可以將 inactive 適當延長
  4. proxy_cache_lock:同樣是減少回源次數。和上面的差別在於快取是否存在
  5. proxy_no_cache:值為若干個變數($string),這個變數的值只有倆類,0 和 非0,這若干個變數中只要有一個值不為 0,就不會觸發快取