Nginx--缓存
一般存的是静态资源,可以提高客户端的访问速度,并减轻服务器的压力
1 客户端缓存
通过设置 expires 指令,响应头中将会返回Expires 和Cache-Control字段
当浏览器发现响应头存在这样的缓存字段,当再次请求相同资源时,就会确认在客户端的资源是否过期
location / {
expires 30m; #缓存30分钟
}
2 服务器缓存(主要设置在反向代理服务器上)
将静态资源的缓存设置在服务器端,当多个用户访问同一个资源时,缓存命中率及系统的性能将以指数的形式提升
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf ... upstream backend{ server 192.168.198.130; server 192.168.198.131; } proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=test:20m max_size=10g; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://backend; proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for; proxy_set_header X-real-ip $remote_addr; proxy_cache test; proxy_cache_valid 200 10m; } }
proxy_cache_path 语法:proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size]; 默认值:None 使用字段:http 指定缓存的路径和一些其他参数,缓存的数据存储在文件中,并且使用代理url的哈希值作为关键字与文件名 levels - 目录结构,可以使用任意的1位或2位数字作为目录结构,如 X, X:X或X:X:X ,最多三级 keys_zone - 指定所有活动的key和元数据存储的共享内存池区域 可以定义多个内存池,但必须是不重复的路径,例如: proxy_cache_path /data/nginx/cache/one levels=1 keys_zone=one:10m; proxy_cache_path /data/nginx/cache/two levels=2:2 keys_zone=two:100m; proxy_cache_path /data/nginx/cache/three levels=1:1:2 keys_zone=three:1000m; inactive - 指定缓存数据的失效时间,默认为10分钟 max_size - 定义最大缓存大小,超出后则删除最少使用的数据
proxy_cache
语法:proxy_cache zone_name;
默认值:None
使用字段:http, server, location
设置一个缓存区域的名称,一个相同的区域可以在不同的地方使用
proxy_cache_valid 语法:proxy_cache_valid reply_code [reply_code …] time; 默认值:None 使用字段:http, server, location 为不同的应答设置不同的缓存时间,例如: proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; 为应答代码为200和302的设置缓存时间为10分钟,404代码缓存1分钟 如果只定义时间: proxy_cache_valid 5m; 那么只对代码为200, 301和302的应答进行缓存 同样可以使用any参数任何应答 proxy_cache_valid 200 302 10m; proxy_cache_valid 301 1h; proxy_cache_valid any 1m;