nginx之开启服务端缓存

user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" $upstream_cache_status';

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    upstream lbs {
        server 192.168.1.12:8080 max_fails=2 fail_timeout=60s;
    }

    proxy_cache_path /root/cache levels=1:2 keys_zone=gen_cache:10m max_size=1g inactive=60m use_temp_path=off;

    server {
        listen       80;
        server_name  localhost a.com;

        access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;

            proxy_pass http://lbs;
            proxy_redirect default;

            # 缓存配置
            proxy_cache gen_cache;
            proxy_cache_valid 200 304 2m;
            proxy_cache_valid 404 1m;
            proxy_cache_key $host$uri$is_args$args;
            add_header Nginx-Cache "$upstream_cache_status";
        }

        error_page   404 500 502 503 504 =200 /default_api;
        location = /default_api {
            default_type application/json;
            return 200 '{"code":"-99","msg":"error"}';
        }
    }

}
  • proxy_cache_path /root/cache:本地路径,用来设置nginx缓存资源的存放地址
  • levels=1:2
    • 默认所有缓存文件都放在上面指定的根路径中,可能影响缓存的性能,推荐指定为2级目录来存储缓存文件;1和2表示用1位和2位16进制来命名目录名称。
    • 第一级目录用1位16进制命名,如a;第二级目录用2位16进制命名,如3a。所以此例中一级目录有16个,二级目录有16 * 16=256个,总目录数为16 * 256=4096个
    • 当level=1:1:1时,表示是三级目录,且每级目录数均为16个
  • keys_zone:在共享内存中定义一块存储区域来存放缓存的key和元数据metadata
  • max_size:最大缓存空间,如果不指定会使用掉所有磁盘空间,当达到disk上限后,会删除最少使用的cache
  • inactive:某个缓存在inactive指定的时间内如果不访问,将会从缓存中删除
  • proxy_cache_valid:配置nginx cache中的缓存文件的缓存时间,proxy_cache_valid 200 304 2m 对于状态为200和304的缓存文件,缓存时间是2分钟
  • use_temp_path:建议为off,则nginx会将缓存文件直接写入指定的cache文件中
  • proxy_cache:启用proxy_cache,并指定key_zone,如果proxy_cache off表示关闭缓存
  • add_header Nginx-Cache “$upstream_cache_status”:用于前端判断是否命中缓存,miss、hit、expired(缓存过期)、updating(更新,使用旧的应答)
  • 注意:nginx缓存过期配置优先级排序:inactive > 源服务器端Expires/max-age > proxy_cache_valid
  • 默认情况下GET请求及HEAD请求会被缓存,而POST请求不会被缓存,并非全部都要缓存,可以过滤部分路径不用缓存
  • 缓存清空
    • 直接rm删除缓存文件
  • 缓存命中率统计
    • 前端打点日志上报
    • nginx日志模板增加信息:$upstream_cache_status
  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水宝的滚动歌词

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值