Nginx緩存開啓

衆所周知,Nginx是一個高性能的web服務器,尤其在高併發和處理靜態頁面的時候有先天的優勢;很大一部分得益於緩存的開啓,那麼如何開啓nginx的緩存呢。

簡單來說可以分兩步:

  1. 定義緩存存儲目錄並指定共享內存空間
  2. 在location裏指定共享內存空間

具體實現如下:

user www;
worker_processes auto;
events {
worker_connections 4096;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
gzip on;
keepalive_timeout 65;
# 以下是緩存相關配置
proxy_cache_path /data/nginx/cache2 levels=1:2 keys_zone=mycache:1024m max_size=2048m inactive=1d ;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /apis/test/img {
proxy_pass http://192.168.1.2/;
# 以下三行是緩存相關配置
proxy_cache mycache;
proxy_cache_valid 200 1d;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_503 http_404;
}
error_page 500 502 503 504 /50x.html;
}

上述配置裏cache相關,具體解釋如下:

  • proxy_cache_path:定義緩存目錄,需要手動創建此目錄;緩存數據存放至此。
  • /data/nginx/cache2:自定義的緩存目錄,緩存中的文件名稱是應用MD5的結果;另外,首先是將緩存響應寫入臨時文件,然後文件才被重命名;
  • levels=1:2:定義緩存的層次結構級別;這裏表示緩存目錄的第一級目錄是1個字符,第二級目錄是2個字符;結構類似:
    Nginx緩存開啓

  • keys_zone=mycache:1024m:內核中建立的用於緩存數據原數據的共享內存空間;這裏存放緩存數據的原數據;查找緩存的時候,先從這個內核空間中找到,緩存數據的原數據,然後再到對應目錄中查找緩存;我這裏定義的zone名稱爲‘mycache’;
  • max_size=2048m:設置緩存空間的最大值;
  • inactive=1d: 設置緩存的數據保留時間,這裏自定義1天內沒有被訪問過就刪除;
  • proxy_cache:在location裏設置內存緩存源數據空間名字,對應我們前面的設定'mycache';
  • proxy_cache_valid: 可以爲不同的響應狀態碼設置不同的緩存時間,比如這裏200狀態碼,設置爲1天;
  • proxy_cache_use_stale:指定後端服務器出現狀況時,nginx可以使用的過期緩存
    另外可以設置proxy_cache_key:用來指定緩存所使用的key的組合字符串,然後用md5進行加密。如不指定默認使用:$scheme$proxy_host$request_uri;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章