Nginx缓存相关指令以及配置示例

黎小强
2021-03-17 / 0 评论 / 459 阅读 / 正在检测是否收录...

相关指令

proxy_cache

开启缓存(对上游服务器数据)指定某一个zone名称)
语法 : proxy_cache zone | off;
默认值 : proxy_cache off;
上下文 :http

proxy_caceh_path

缓存的路径,

path : 缓存目录路径

keys_zone : 1M可以缓存8千多个key

语法 : proxy_cache_path path [levels=levels][use_temp_path=on|off] 
keys_zone=name:size [inactive=time] [max_size=size] [min_free=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
默认值 : proxy_cache_path off;
上下文 : http
可选参数
可选参数含义
path缓存文件的存放路径 【必选】
levelpath的目录层级
use_temp_pathoff直接使用path路径,on使用proxy_temp_path路径
keys_zonename是共享内存名称;size是共享内存大小 【必选】
inactive在指定时间内没有被访问缓存会被清理;默认10分钟
max_size设定最大的缓存文件大小,超过将由CM清理
manager_filesCM清理一次缓存文件,最大清理文件数;默认100
manager_sleepCM清理一次后进程的休眠时间,默认200毫秒
manager_thresholdCM清理一次最长耗时;默认50毫秒
loader_filesCL载入文件到共享内存,每批最多文件数;默认100
loader_sleepCL加载缓存文件到内存中,进程休眠时间;默认200毫秒
loader_thresholdCL每次载入文件到共享内存的最大耗时,默认50毫秒

proxy_cache_key

缓存key信息
语法: proxy_cache_key string;
默认值 : proxy_cache_key $scheme$proxy_host$request_uri;
上下文 : http、server 、 location

proxy_cache_valid

语法: proxy_cache_valid [code..] time;
默认值: -
上下文:http、server 、 location
配置示例:proxy_cache_valid 60m; // 只对200/301/302的响应码缓存

upstream_caceh_status变量

变量名: upstream_cache_status

  • MISS : 未命中缓存
  • HIT : 命中缓存
  • EXPIRED : 缓存过期
  • STALE : 命中了陈旧缓存
  • REVALIDDATED : Nginx验证陈旧缓存依然有效
  • UPDATING : 内容陈旧,但正在更新
  • BYPASS : 响应从原始服务器获取

配置示例

虚拟机做演示

作为上游服务器 192.168.253.131

作为代理服务器 :192.168.253.130


代码演示

上游服务器配置

90019002这2个端口做为2台服务器。并且把对应的端口号开启,然后创建9001/9002目录。

server {

        listen 9001;
        root /opt/html/9001;

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

server {
        listen 9002;
        root /opt/html/9002;

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

代理服务器配置

配置虚拟渔民Host /ect/host

#缓存配置
proxy_cache_path /opt/nginx/cache_temp levels=2:2 keys_zone=cache_zone:30m max_size=32g
inactive=60m use_temp_path=off;

#反向代理IP
upstream cache_server {
        server 192.168.253.131:9001;
        server 192.168.253.131:9002;
}

server {
        listen 80;
        server_name cache.lmq-nginx.com;

        location / {
                proxy_pass http://cache_server;

                #开启缓存
                proxy_cache cache_zone;
                proxy_cache_valid 200 5m; #缓存有效5分钟
                add_header Nginx-Cache-Status "$upstream_cache_status";#查看缓存状态变量

        }
}

重载nginx,并运行

运行访问

开启缓存访问,一直访问9001 ,并且会生成缓存文件,这里定义到/opt/nginx/temp_path

1.jpg


其他说明

1. 怎么修改缓存的key呢

location / {
        proxy_pass http://cache_server;
        
        #开启缓存
        proxy_cache cache_zone;
        proxy_cache_valid 200 5m;#缓存有效期5分钟
        add_header Nginx-Cache-Status "$upstream_cache_status";#查看缓存状态变量
        
        #改变key名
        proxy_cache_key $proxy_host$reuqest_uri;  #主机名+文件名
}

2. 设置上游服务器的缓存有效期

虽然代理服务器设置了有效期5分钟,但是可以由上游服务器去控制

在上游服务器设置

server {
    add_header X-Accel-Expires 5;   //5秒有效
    
    locatoin / {
        ....
    }
}
0

评论 (0)

取消