nginx緩存配置和ngx_cache_purge總結css
nginx緩存配置html
首先設定一個cache日誌的格式,能夠在日誌中查看「MISS」和「HIT」狀態nginx
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;app
proxy_send_timeout 5;ide
proxy_buffer_size 16k;spa
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,看到以下信息說明緩存已被清除。
Path: /cache/cache/6/c1/368f9db143996c9f865921f8b2c94c16