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配置项
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章