nginx緩存配置和ngx_cache_purge總結
nginx緩存配置
首先設定一個cache日志的格式,可以在日志中檢視“MISS”和“HIT”狀态
log_format cache '***$time_local ' '***$upstream_cache_status ' '***Cache-Control: $upstream_http_cache_control ' '***Expires: $upstream_http_expires ' '***"$request" ($status) ' '***"$http_user_agent" ';
其次設定緩存參數
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
#注:temp_path和cache_path 指定的路徑必須在同一分區
proxy_temp_path/cache/temp_dir;
#設定Web緩存區名稱為cache_one,記憶體緩存空間大小為200MB,1天沒有被通路的内容自動清除,硬碟緩存空間大小為30GB。
proxy_cache_path /cache/cache levels=1:2 keys_zone=cache_one:200minactive=1d max_size=30g;
#設定一個upstream
upstream appserver {
server 192.168.10.5;
}
#用于清除緩存,假設一個URL為http://192.168.10.3/test.txt,通過通路http://192.168.10.3/purge/test.txt就可以清除該URL的緩存。此功能需要手動編譯子產品ngx_cache_purge,下載下傳位址為http://labs.frickle.com/files/,最好用最新版本,本例中為2.1。
location ~ /purge(/.*) {
#設定隻允許指定的IP或IP段才可以清除URL緩存。
allow 127.0.0.1;
allow 192.168.10.0/24;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
}
#注意,此規則必須放于purge之後,因為放之前就會優先比對到此規則,會在清除緩存的時候報404錯誤。
location ~ .*\.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {
proxy_pass http://appserver;
proxy_redirect off;
#以域名、URI、參數組合成Web緩存的Key值,Nginx根據Key值哈希,存儲緩存内容到二級緩存目錄内
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_cache cache_one;
#對不同的HTTP狀态碼設定不同的緩存時間
proxy_cache_valid 200 302 1h;
proxy_cache_valid 301 1d;
proxy_cache_valid any 1m;
expires 30d;
#可以再cache.log日志中看到 MISS和HIT狀态
access_log/usr/local/nginx/logs/cache.log cache;
配置完成,重新啟動nginx,不能reload。
随便通路一個頁面http://192.168.10.3/9.jpg,在/cache/cache下面也會生成相應的緩存檔案
檢視cache.log,可以看到第一次通路為MISS,第二次為HIT
***19/Mar/2014:10:48:16 +0800 ***MISS ***Cache-Control: - ***Expires: - ***"GET /9.jpg HTTP/1.1" (200) *** #後面浏覽器資訊就省略了
***19/Mar/2014:10:48:37 +0800 ***HIT ***Cache-Control: - ***Expires: - ***"GET /9.jpg HTTP/1.1" (304) ***
清除緩存
通路 http://192.168.10.3/purge/9.jpg,看到如下資訊說明緩存已被清除。
Successful purge
Key : 192.168.10.3/9.jpg
Path: /cache/cache/6/c1/368f9db143996c9f865921f8b2c94c16