web缓存服务器位于客户端和源服务器之间,当客户端访问一个url时,web缓存服务器就会向源服务器发送请求,并保存这次的响应信息,当下一次客户端再访问这个url时就会直接从缓存服务器中获取,不用再项源服务器发送请求
nginx有永久缓存和暂时缓存两种、
nginx提供的nginx_store会将响应内容缓存到本地,除非手动删除,不然永久有效
server{
listen 80;
server-name 192.168.78.3;
location /{
root cache;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path cache_tmp;
if(!-e $request_filename){
proxy_pass http://192.168.78.128
}
}
}
root是配置缓存的目录,proxy_store是配置开启本地缓存,proxy_store_access是配置缓存的读写权限,proxy_temp_path是设置反向代理时接收的数据临时存储文件的目录,该目录会在nginx生效后自动创建.!-e是判断文件或目录或链接是否存在,不存在则执行里面的指令,$request_filename是当前请求的文件路径或url,如果存在则不用再向源服务器获取资源。
还有一种临时缓存是使用proxy_cache指令设置
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
proxy_temp_path /usr/local/nginx/proxy_tmp_dir
proxy_cache_path /usr/local/nginx/proxy_cache_dir levels=1:2 keys_zone=chche_one:50m
inactive=1m max_size=500m;
server {
listen 80;
server_name test.ng.test;
add_header X-Via $server_addr;
add_header X-Cache $upstream_cache_status;
location /{
proxy_cache cache_one;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_vaild 200 1m;
proxy_cache_vaild 304 1m;
}
}
}
首先proxy_temp_path是缓存服务器接收源服务器响应内容时使用的临时目录,proxy_cache_path是设置缓存目录,levels是表示缓存下的目录结构,它是根据hash后请求的url地址创建的,目录名称从哈希后的字符串开始截取。例如,hash后的url为
1jiffnbewoiw123weq,则第一层子目录名称为q,第二层是we。keys_zone是指定缓存区名称和大小,名称为cache_one,大小为50mb,inactive是配置多久后缓存失效,1m为1分钟,max_size是指定磁盘大小。
add_header是添加响应头,用于获知访问的服务器地址与缓存是否成功
proxy_cache是设置缓存区域的名称
proxy_cache_key是用于设置hash的key值组成规则,
proxy_cache_vaild是配置相应的状态码对应的缓存时间