nginx缓存配置

使用 nginx 缓存配置缓存接口数据(主要用于接口实时性不是很强的业务场景)

配置开启缓存,nginx.conf 配置如下

http {
	
	#nginx缓存配置
    proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=nuget-cache:20m max_size=50g inactive=1d;

    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"';

    #access_log  logs/access.log  main;

    sendfile        on;

    #keepalive_timeout  0;
    keepalive_timeout  60;

    client_max_body_size 120M;
    
    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types   application/json text/plain application/javascript application/x-javascript text/css application/xml;
    gzip_vary on;
    #gzip  on;

    #导入外部服务器配置文件存放地址
    include /usr/local/nginx/conf/vhosts/*.conf;
}

proxy_cache_path 各个配置值的含义解析如下:

  • proxy_cache_path 指缓存的目录,目录为:/usr/local/nginx/cache
  • levels=1:2 表示采用2级目录结构;
  • keys_zone 指的是缓存空间名称,叫nuget-cache。缓存内存的空间为20M。
  • max_size 指的是缓存文件可以占用的最大空间。为50G.
  • inactive=1d; 默认过期时间为1天。,也可以写成:inactive=60s、inactive=1h。

还需要在server设置部分添加 proxy_cache 与 proxy_cache_valid的设置,server部分通过 include 命令引入,目录是 /usr/local/nginx/conf/vhosts 下的所有 .conf结尾的文件,server 配置如下

server {
    listen 80;
    server_name www.196.com;

    location / {
		#跳转到指点tomcat服务器
    	proxy_pass http://192.168.2.108:8080/;
   		proxy_set_header Host $host;
    	proxy_set_header X-Real-IP $remote_addr;
    	proxy_set_header REMOTE-HOST $remote_addr;
    	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location ^~ /cache/ {
        #跳转到指点tomcat服务器
        proxy_pass http://192.168.2.108:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		
		#接口缓存配置
	    proxy_cache nuget-cache;
	    proxy_cache_valid 60s;
	    proxy_ignore_headers Set-Cookie Cache-Control;
	    proxy_hide_header Cache-Control;
	    proxy_hide_header Set-Cookie;
    }
}
  • proxy_cache 设置的是 proxy_cache_path中的keys_zone的值。
  • proxy_cache_valid:设置的是缓存过期时间,比如设置168个小时过期。
  • proxy_ignore_headers的含义是:忽略Cache-Control的请求头控制,依然进行缓存,比如对请求头设置cookie后,默认是不缓存的,需要我们增加忽略配置。

location ^~ /cache/ 的含义:匹配 controller ,如果是以 cache 开头的controller 请求,返回的接口数据会缓存 60s,在60秒之内重复请求,不会跳转到服务器请求数据,默认返回缓存数据,使用户数据实时性不是很高的场景

location / 含义:匹配除 cache 的其他请求,会转发到 192.168.2.108:8080 请求数据,数据实时请求

如果需要更新缓存数据,直接删除 /usr/local/nginx/cache 目录下的所有文件,缓存就会重新刷新
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值