nginx缓存服务器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_38004619/article/details/79076613

nginx缓存

一、缓存类型
1.服务端缓存:redis,memcached。
2.代理端缓存:nginx。
3.浏览器端缓存 :如果你浏览过程中,比如前进或后退,访问到同一个图片,这些图片可以从浏览器缓存中调出而即时显现。

二、Nginx的缓存简介
nginx的http_proxy模块,可以实现类似于Squid的缓存功能。Nginx对客户已经访问过的内容在Nginx服务器本地建立副本,这样在一段时间内再次访问该数据,就不需要通过nginx服务器再次向后端服务器发出请求,所以能够减少nginx服务器与后端服务器之间的网络流量,减轻网络拥塞,同时还能减小数据传输延迟,提高用户访问速度。同时,当后端服务器宕机时,Nginx服务器上的副本资源还能够回应相关的用户请求,这样能够提高后端服务器的鲁棒性。

三、配置语法
开启缓存

要使用缓存,首先要使用 proxy_cache_path 这个指令(必须放在 http 上下文的顶层位置),然后在目标上下文中使用 proxy_cache 指令

配置示例

http {
...

proxy_cache_path /path/to/cache   levels=1:2   keys_zone=my_cache:10m   max_size=10   ginactive=60m use _temp_path=off;

参数讲解:
/path/to/cache  #本地路径,用来设置Nginx缓存资源的存放地址  

levels  #默认所有缓存文件都放在同一个/path/to/cache下,但是会影响缓存的性能,因此通常会在/path/to/cache下面建立子目录用来分别存放不同的文件。假设levels=1:2,Nginx为将要缓存的资源生成的key为f4cd0fbc769e94925ec5540b6a4136d0,那么key的最后一位0,以及倒数第2-3位6d作为两级的子目录,也就是该资源最终会被缓存到/path/to/cache/0/6d目录中  

key_zone  #在共享内存中设置一块存储区域来存放缓存的key和metadata(类似使用次数),这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key  

max_size   #最大cache空间,如果不指定,会使用掉所有disk space,当达到配额后,会删除最少使用的cache文件  

inactive   #未被访问文件在缓存中保留时间,本配置中如果60分钟未被访问则不论状态是否为expired,缓存控制程序会删掉文件。inactive默认是10分钟。需要注意的是,inactive和expired配置项的含义是不同的,expired只是缓存过期,但不会被删除,inactive是删除指定时间内未被访问的缓存文件  
use_temp_path   #如果为off,则nginx会将缓存文件直接写入指定的cache文件中,而不是使用temp_path存储,official建议为off,避免文件在不同文件系统中不必要的拷贝
  
proxy_cache     #启用proxy cache,并指定key_zone。另外,如果proxy_cache off表示关闭掉缓存。

server {
...

proxy_cache off;#开启

location ~ .*\.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {

proxy_pass http://localhost:80;#集群
proxy_cache_valid 200 304 12h; #设置http状态码为200,302缓存时间为12小时
proxy_cache_valid any 10m; #设置http状态码为200,302缓存时间为10分
proxy_cache_valid any 1m;
proxy_cachemy_cache;#上面的keys_zone
expires 30d;#设置失期时间,为30天
proxy_no_cache $request_url #如果不为0或者空不缓存$request_url进行匹配 如何让部分页面不缓存

}

}

}



猜你喜欢

转载自blog.csdn.net/m0_38004619/article/details/79076613