一、nginx实现缓存功能说明
缓存数据分为两部分(索引,数据):
1、存储数据的索引,存放在内存中;
2、存储缓存数据,存放在磁盘空间中;
Nginx实现缓存是通过代理缓存pxory_cache,这也是ngx_http_proxy_module模块提供的功能,这里配置选项较多,常用的选项有:proxy_cache_path、proxy_cache、proxy_cache_valid。
1、proxy_cache_path
proxy_cache_path定义一个完整的缓存空间,指定缓存数据的磁盘路径、索引存放的内存空间以及一些其他参数,如缓存删除策略。
注意,该选项只能定义在http块上下文中。
如,proxy_cache_path /data/cache levels=1:2 keys_zone=web:10m max_size=1G inactive=10;
缓存数据存储在/data/cache目录中;
levels:配置在该目录下再分两层目录,一层1个随机字符作为名称,二层2个随机字符作为名称,levels最多三层,每层最多两个字符,这是为了加快访问文件的速度;最后使用代理url的哈希值作为关键字与文件名
keys_zone:用来为这个缓存区起名,并设置大小。指定名称为web,这个名称后面proxy_cache需要引用;而10m就是内存空间的大小;
max_size: 指定最大缓存数据磁盘空间的大小;
inactive: 在inactive指定的时间内,未被访问的缓存数据将从缓存中删除;
2、proxy_cache
proxy_cache用来引用上面proxy_cache_path定义的缓存空间,现时打开缓存功能,如下:
proxy_cache web; #引用上面定义上的缓存空间,同一缓存空间可以在几个地方使用
3、proxy_cache_valid
proxy_cache_valid设置不同响应代码的缓存时间,如:
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
二、实现缓存功能配置文件实例
http {
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 /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include mime.types;
default_type application/octet-stream;
#新建缓存
proxy_cache_path /data/cache levels=1:2 keys_zone=nginx:20M max_size=2G inactive=5;
#为缓存数据添加头部信息
add_header muzigan-Cache "$upstream_cache_status form $server_addr";
upstream static_server {
server 192.168.17.175:80 weight=5;
server 192.168.17.176:80 weight=3;
check interval=3000 rise=2 fall=5 timeout=2000 type=http;
check_http_expect_alive http_2xx http_3xx;
}
server {
listen 80 default_server;
server_name _;
location ~ ^/images {
index index.php index.html;
proxy_pass http://static_server;
#开启缓存
proxy_cache nginx;
#缓存设置
proxy_cache_valid 200 301 302 2m;
}
}
}本文出自 “13126984” 博客,请务必保留此出处http://13136984.blog.51cto.com/13126984/1981669
原文:http://13136984.blog.51cto.com/13126984/1981669