iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0

今天來跟大家分享nginx 的cache設定~

下載完nginx之後,

  1. 建立nginx 用的cache目錄
mkdir /var/nginx
mkdir /var/nginx/cache
  1. 在/etc/nginx/nginx.conf加入下方指令
proxy_cache_path  /var/nginx/cache  levels=1:2  keys_zone=STATIC:10m  inactive=24h  max_size=1g;
  • nginx 的緩存其實有兩個目錄,一個是臨時緩存目錄、另一個是真實緩存目錄,緩存時的流程是(1)先把資料保存到臨時目錄,(2)完成保存後,(3)再移動到真實目錄。如果不設定臨時目錄就是直接把緩存寫入到真實目錄中!
    • 指定臨時目錄proxy_temp_path && use_temp_path=on 啟用臨時目錄
    • 指定真實目錄proxy_cache_path
  • 解說參數時間
    • level: 設定兩層結構的資料夾目錄,因此我的是在/var/nginx/cache/e/d7 建立好的/var/nginx/cache下兩層喔。為什麼建議用兩層呢?因為將大量文件放置在單個目錄會導致文件訪問變慢~level沒設的話所有文件放在單一目錄!
    • keys_zone: 設置一個共享內存區,STATIC是名稱,最大佔用內存是10,
    • inactive: 在不被訪問的情況下能夠在內存中保持的時間,24小時內未被請求就從緩存區清除
    • max_size: 本地緩存的上限,如不設定,緩存就會不斷增長...,那如果到達緩存上限呢?會利用cache manger來移除少被使用的文件
    • use_temp_path=off: 將這些緩存文件寫入同一個目錄底下

proxy_cache STATIC;
proxy_cache_valid 200 1d;
proxy_cache_use_stale error timeout invaild_header updating http_500 http_502 http_503 http_504
  • 解釋參數
    • proxy_cache: 代表使用http模塊中的STATIC緩存,我們上面設定的喔,可自行變換名稱
    • proxy_cache_valid: 緩成http status code 200 1天
    • proxy_cache_use_stale: 簡單來說,在緩存或是服務起繁忙或是卡住時,比起傳遞錯誤訊息不如使用緩存中舊的文件,舉例來說clientA 發request來,nginx 正準備去跟上服務器請求更新緩存時,client B 又發request來,那這時就先回傳舊的緩存給client B ,等 nginx 更新完後,client C來,就回傳新的緩存。可以參考proxy_cache_use_stale也講得很清楚喔

這時呼叫看看api ,就會發現/var/nginx/cache/e/d7底下的檔案中有資料進來

  • 資料參考
  1. Nginx內容緩存及常見參數設定 這篇講得很詳細推推
  2. 官方文件
  3. Nginx配置反向代理緩存proxy_cache
  4. proxy_cache_use_stale

上一篇
[Day13] 簡單搞懂Nginx Certbot 設定
下一篇
[Day15] 簡單搞懂 Gunicorn & Uvicorn 名詞解釋
系列文
剛入職軟體工程師會需要知道的常見工具篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言