Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Nginx proxy_cache 完整配置指南:從入門到避坑實戰

編輯:關於伺服器

為什麼選擇 proxy_cache?

雖然 proxy_cache 效能不及 Memcached 等記憶體級快取,但 Nginx 目前不支援對 Memcached 執行寫入操作。對於中小型站點,正確配置 proxy_cache 足以大幅緩解後端壓力。

常見誤區:缺少關鍵指令導致快取不生效

許多教程只提到 proxy_cache_path 與 proxy_cache,實際上還必須加上:

proxy_cache_valid 200 304 302 24h;
proxy_pass https://backend_server;
  • proxy_cache_valid:定義對應狀態碼的快取時長,200 為必要
  • proxy_pass:指定上游來源位址,快取機制是從此處抓取內容並存儲

缺少任一指令,快取目錄將不會產生任何檔案。

完整配置範例(生產環境可用)

1. http 區塊定義快取區域

http {
    ...
    proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=content:20m inactive=1d max_size=100m;
    proxy_temp_path /usr/local/nginx/proxy_temp;
    ...
}

參數解析:

  • levels=1:2:兩層子目錄結構
  • keys_zone=content:20m:共享記憶體區名稱與大小
  • inactive=1d:1 天未訪問自動刪除
  • max_size=100m:最大磁碟佔用

2. server/location 區塊啟用快取

location / {
    proxy_cache content;
    proxy_cache_valid 200 304 301 302 10d;
    proxy_cache_valid any 1d;
    proxy_cache_key $host$uri$is_args$args;
    proxy_pass https://upstream_backend;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_redirect off;
}

3. 排除動態頁面快取

location ~ \.(php|jsp|cgi)?$ {
    proxy_pass https://backend_php;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    # 不加 proxy_cache,動態內容不快取
}

快取清除策略

  • 全量清除:直接刪除 proxy_cache_path 目錄下所有內容
  • 單一 URL 清除:需掌握 proxy_cache_key 的哈希規則,或安裝 ngx_cache_purge 模組
  • 管理介面:配合後端語言編寫清除 API,或使用 Purge 外掛

核心原理釐清

proxy_cache 是反向代理快取,而非靜態檔案生成器。它將上游回應存為磁碟檔案,下次請求直接服務。靜態檔案本身已在磁碟,無需再經 proxy_cache。

常見問題排查

  1. 檢查 proxy_cache_path 與 proxy_temp_path 是否在同一分區
  2. 確認 proxy_cache_valid 涵蓋目標狀態碼
  3. 查看錯誤日誌 /var/log/nginx/error.log 是否有權限或路徑錯誤
  4. 測試指令:nginx -t 驗證語法,nginx -s reload 熱重載
Copyright © Windows教程網 All Rights Reserved