proxy_cache缓存系统

proxy_cache是nginx内置的一个缓存系统,可实现减小后端负载的作用。

常用参数说明

参数说明
proxy_cache_path缓存文件路径。level表示目录层级,1:2表示两个子目录。keys_zone指定缓存区名称和大小。inactive表示缓存有效期。max_size表示硬盘中缓存的大小。use_temp_path为off时表示缓存文件直接写到cache中而不使用temp_path,避免文件拷贝导致影响性能。
proxy_cache启用缓存并指定缓存区域
proxy_cache_valid根据状态码来定义缓存的有效期
proxy_cache_min_uses被访问多少次后才缓存,默认为1
proxy_cache_methods指定可以被缓存的请求方法,默认值为 GET HEAD
proxy_cache_convert_head如果设置为 on 表示允许将请求的 HEAD 方法改成 GET 方法进行缓存;如果设置为 off,则缓存的 key 需要加上$request_method,即$host$request_uri$request_method
proxy_cache_key设置缓存的 key,默认 key 是完整的 URL
proxy_cache_background_update允许后台启动一个子请求去更新过期的缓存数据,并提供一个过期的缓存数据响应给客户端,前提是 proxy_cache_use_stale 的配置中包含 updating
proxy_cache_use_stale允许在某种条件下返回请求时使用过期的缓存数据
proxy_cache_lock多条相同url请求未命中缓存时,nginx只发送一条请求到后端
proxy_cache_lock_timeout缓存未命中等待超时后,所有未命中的url请求都会转到后端
proxy_ignore_headers即便有指定的响应头操作,依然使用缓存

配置示例

http {
    # 设置缓存路径、目录层级(1:2 表示两个子目录)、内存zone的名字和内存大小
    # 缓存有效时间、硬盘最大存储大小、缓存文件直接写到cache文件中而不使用temp_path
    proxy_cache_path /home/apps/nginx/cache levels=1:2 keys_zone=ngxcache:100m inactive=7d max_size=1g use_temp_path=off;
    
    server {
        ...
        
        proxy_cache ngxcache;
        proxy_cache_valid 200 304 5m;
        proxy_cache_valid 301 302 2m;
        proxy_cache_min_uses 1;
        # 添加一个响应头,用来标识请求是否命中缓存
        add_header N-Cache-Status $upstream_cache_status;
        proxy_cache_methods GET HEAD;
        proxy_cache_convert_head on;
        proxy_cache_key $scheme$host$uri$is_args$args;
        proxy_cache_background_update on;
        # 允许在某种条件下返回请求时使用过期的缓存数据
        proxy_cache_use_stale error timeout invalid_header updating http_502 http_503 http_504;
        proxy_cache_lock on;
        proxy_cache_lock_timeout 10;
        # 即便有Vary、Set-Cookie的响应头操作,依然使用缓存
        proxy_ignore_headers Vary Set-Cookie;
        
        proxy_pass http://backend;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值