nginx缓存有两种
一种是临时缓存,可以proxy_cache_purge可以清除
配置示例如下:
##
#临时缓存http配置区
##
#proxy_temp_path /var/www/static;
proxy_cache_path /var/www/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=800m;
server {
listen 80 default_server;
server_name ~^\w[-\w.+]*\w+$;
##
#临时缓存server配置区2
##
add_header X-Via $server_addr;
add_header X-Cache $upstream_cache_status;
location ~ /purge {
proxy_cache_purge cache_one $1$is_args$args;
}
##
# JS和CSS缓存时间设置.
##
location ~* .*\.(js|css)?$
{
if ( !-e $request_filename) {
proxy_pass http://$passipa;
}
##
# 临时缓存server配置区3
##
expires 1;
proxy_cache cache_one;
proxy_cache_key $uri$is_args$args;
proxy_cache_valid 200 12h;
proxy_cache_valid 304 12h;
proxy_cache_valid 301 302 1d;
proxy_cache_valid any 1m;
}
}
一种是永久缓存,文件放在硬盘上,这种只能想别的办法删除静态文件,但是需要lua扩展
server {
##
#用于清除缓存(需要安装ngx_cache_purge模块);
#临时缓存清除/purge(/.*)
##
location ~ /purge {
#proxy_cache_purge cache_one $1$is_args$args;
#使用 http://host/purge?/path/to/youfile.js
default_type text/plain;
set $cache_home /var/www/static;
content_by_lua '
function file_exists(path)
local file = io.open(path, "rb")
if file then file:close() end
return file ~= nil
end
--注释 ngx.var.args 为链接参数
if ngx.var.args ~= nil then
local realpath=ngx.var.cache_home..ngx.var.args
if file_exists(realpath) then
os.remove(realpath)
ngx.say(realpath)
end
end
';
}
##
# 图片缓存时间设置.
##
root /var/www/static; #缓存静态文件.
location ~* .*\.(js|css)$
{
if ( !-e $request_filename) {
proxy_pass http://$passipa;
}
proxy_store on; # 开启本地永久缓存.
proxy_store_access user:rw group:rw all:r; # 设置缓存的读写规则.
proxy_temp_path /var/www/static; # 设置反向代理接受的数据临时存储文件的目录,配置生效时候会自动创建.
}
}