proxy_cache_path /nginx/cache/mall levels=1:2 keys_zone=mall:20m max_size=1g;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://10.176.65.48:8080/;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_cache mall;
# proxy_cache_valid 200 10m;
}
location ~/cache/ {
proxy_pass http://10.176.65.48:8080;
proxy_cache_methods GET HEAD POST;
proxy_cache_key "$request_uri|$request_body";
proxy_set_header X-Real-IP $remote_addr;
add_header X-Via $server_addr;
add_header X-Cache $upstream_cache_status;
proxy_cache mall;
proxy_cache_valid 200 10m;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
A、proxy_cache_path
格式:
proxy_cache_path path [levels=numbers] keys_zone=zone_name:zone_size[inactive=time] [max_size=size]
说明:
path -缓存文件存放的位置
levels -缓存目录结构,可以是1、2、3位数字作为目录,最多是3位数字如:1,1:2
keys_zone -指定缓存池名字及大小,每个定义缓存路径必须不同
inactive -设置每个缓存区缓存文件的有效时长,超过该时长没被访问的缓存被删除
max_size -设置不活动的缓存大小,不活动的缓存超过该大小后被删除
B、proxy_cache
格式:
proxy_cache cache_name
说明:
指定缓存区域的名字,一个相同的区域可以在不同的地方使用。
C、proxy_cache_valid
格式:
proxy_cache_valid reply_code [reply code…|any] time;
说明:
reply_code -不同的应答代码
time -为不同应答设置不同缓存时长 默认为分钟m
any - 代表任何代码
$upstream_cache_status - 缓存的状态 可能的值为:MISS(未命中)、Hint(命中)、Expired(请求传递到后台)、Stale(后端得到过期的应答)、Updating(正更新,使用旧的应答)等。那么,在这里如果缓存的状态为HINT,就说明命中了缓存,也就是调用了缓存文件。
注:默认情况下nginx缓存的请求有 GET 和 HEAD ,我们要自己配置 proxy_cache_methods ;同时我们还需要指定key的规则 proxy_cache_key