相关指令
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 | 缓存文件的存放路径 【必选】 |
level | path的目录层级 |
use_temp_path | off直接使用path路径,on使用proxy_temp_path路径 |
keys_zone | name是共享内存名称;size是共享内存大小 【必选】 |
inactive | 在指定时间内没有被访问缓存会被清理;默认10分钟 |
max_size | 设定最大的缓存文件大小,超过将由CM清理 |
manager_files | CM清理一次缓存文件,最大清理文件数;默认100 |
manager_sleep | CM清理一次后进程的休眠时间,默认200毫秒 |
manager_threshold | CM清理一次最长耗时;默认50毫秒 |
loader_files | CL载入文件到共享内存,每批最多文件数;默认100 |
loader_sleep | CL加载缓存文件到内存中,进程休眠时间;默认200毫秒 |
loader_threshold | CL每次载入文件到共享内存的最大耗时,默认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
代码演示
上游服务器配置
用9001
、9002
这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. 怎么修改缓存的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)