nginx 反向代理的緩存問題

1. nginx配置

http {
     proxy_cache_path /data/nginx_cache/ levels=1:2 keys_zone=my_zone:10m inactive=60s max_size=5g;#訪問時間,過期就會刪除
}



#es判例的
location ~ /es/precedents {
    proxy_cache my_zone;
    proxy_cache_valid 200 304 10m;#這個是文件緩存時間,和訪問頻率無關
    proxy_ignore_headers Set-Cookie Cache-Control;#這句代碼很關鍵,尤其要忽略set-cookie
    proxy_hide_header Cache-Control;
    proxy_hide_header Set-Cookie;
    proxy_pass_header Server;
    #下面的與緩存無關
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Scheme $scheme;
    proxy_connect_timeout 5000;
    proxy_read_timeout 5000;
    proxy_send_timeout 5000;
    proxy_pass http://esModify;
}

2.緩存過期控制

緩存過期的因素:
(1)inactive:在proxy_cache_path配置項中進行配置,說明某個緩存在inactive指定的時間內如果不訪問,將會主動從緩存中刪除。再次訪問時,就會去拉取 

(2)nginx的配置項 proxy_cache_valid:配置nginx cache中的緩存文件的緩存時間,如果配置項爲:proxy_cache_valid 200 304 2m;說明對於狀態爲200和304的緩存文件的緩存時間是2分鐘,兩分鐘之後再訪問該緩存文件時,文件會過期,從而去源服務器重新取數據。



緩存過期的清理順序,由高到低爲:

inactive配置項 > 源服務器設置的Expires、源服務器設置的Max-Age  > proxy_cache_valid配置項
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章