nginx缓存服务器配置
Ⅰ Nginx缓存设置教程
| 这篇文章主要介绍了Nginx缓存设置案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下 |
在开发调试web的时候,经常会碰到因浏览器缓存(cache)而经常要去清空缓存或者强制刷新来测试的烦恼,提供下apache不缓存配置和nginx不缓存配置的设置。在常用的缓存设置里面有两种方式,都是使用add_header来设置:分别为Cache-Control和Pragma。
对于站点中不经常修改的静态内容(如图片,JS,CSS),可以在服务器中设置expires过期时间,控制浏览器缓存,达到有效减小带宽流量,降低服务器压力的目的。
以Nginx服务器为例:
【背景】:Expires是Web服务器响应消息头字段,在响应http请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。
【相关资料】
1、Cache-control策略
Cache-Control与Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据。只不过Cache-Control的选择更多,设置更细致,如果同时设置的话,其优先级高于Expires。
http协议头Cache-Control :
值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age
各个消息中的指令含义如下:
Last-Modified/If-Modified-Since
其最终达到的就是等效于设置这三类html缓存技术:
Ⅱ Nginx作为静态资源web服务,控制浏览器缓存、防盗链,你该如何配置
浏览器缓存简介
遵循HTTP协议的浏览器缓存机制包括Expires;Cache-control等。
当浏览器无缓存时,请求响应流程直接获取服务器内容。
当浏览器有缓存时,请求响应流程首先检查缓存内容,若有效则直接返回,否则请求服务器。
浏览器缓存校验过期机制遵循时间戳,确保内容及时更新。
Nginx控制浏览器缓存配置
通过ngx_http_headers_mole实现控制。
配置“Expires”和“Cache-Control”头信息,控制页面缓存。
“Expires”头信息过期时间由当前系统时间与设定时间相加得到。
“Cache-Control”头信息的“max-age=time”表示有效期为时间秒。
epoch参数为1970年1月1日00:00:01 GMT,max参数为2037年12月31日23:55:55 GMT,表示有效期10年。
off参数失效“Expires”和“Cache-Control”响应头信息。
应用实例
编辑/etc/nginx/conf.d/static.conf。
使用nginx -s reload重新载入配置文件。
创建/vagrant/doc/hello.txt文件。
通过curl访问检查http响应头信息,验证缓存配置。
防盗链配置
目的:防止资源被盗用。
思路:识别非正常用户请求。
基于http_refer防盗链配置模块
none、blocked、server_names和正则表达式等选项定义防盗链规则。
none选项忽略Referer字段。
blocked选项检查Referer字段值是否被防火墙或代理服务器删除。
server_names选项检查Referer字段是否包含服务器名称。
正则表达式选项匹配Referer字段中的特定内容。
应用实例
编辑conf.d/static.conf文件。
使用nginx -s reload重新载入配置文件。
创建/vagrant/doc/hello.txt文件。
使用curl进行访问测试,验证防盗链配置。
Ⅲ Nginx缓存&优雅清除缓存
Nginx作为高性能的web服务器,其缓存功能对于提升页面响应速度和减轻后端压力至关重要。浏览器缓存流程涉及用户本地存储,当缓存失效时,Nginx作为缓存服务器能从web缓存获取数据。Nginx的缓存配置主要包括以下几点:
1. Nginx缓存配置
- proxy_cache和proxy_cache_path: 定义缓存存放路径和相关参数,如proxy_cache zone默认关闭,而proxy_cache_path用于指定路径和缓存策略。
- proxy_cache_valid: 设置缓存有效期,区分缓存过期和删除,inactive参数决定缓存未访问的清理时间,proxy_cache_valid则控制缓存时间。
- proxy_cache_bypass和proxy_no_cache: 分别配置不走缓存和不缓存的条件,如资源更新、缓存使用次数等。
2. Nginx缓存管理
以一个示例说明:配置Nginx缓存服务器和服务端,通过访问缓存路径测试缓存状态(如初次访问为MISS,后续为HIT,过期后为EXPIRED)。如果服务端内容变更,需要清除对应缓存,可以使用ngx_cache_purge模块。
3. Nginx缓存清除
使用ngx_cache_purge模块可删除特定缓存,例如访问/purge/路径删除指定缓存。
Ⅳ nginx 缓存机制
Nginx缓存的基本思路
基本思想是利用客户访问的时间局部性原理,对客户已经访问过的内容在Nginx服务器本地建立副本,这样在一段时间内再次访问该数据,就不需要通过Nginx服务器再次向后端服务器发出请求,所以能够减少Nginx服务器与后端服务器之间的网络流量,减轻网络拥塞,同时还能减小数据传输延迟,提高用户访问速度。同时,当后端服务器宕机时,Nginx服务器上的副本资源还能够回应相关的用户请求,这样能够提高后端服务器的鲁棒性。
对于缓存,我们大概会有以下问题:
(1)缓存文件放在哪儿?
(2)缓存的空间大小是否可以限定?
(3)如何指定哪些请求被缓存?
(4)缓存的有效期是多久?
(5)对于某些请求,是否可以不走缓存?
解决这些问题后,nginx的缓存也就基本配置完成了,下面看详细配置过程
开启缓存
要使用缓存,首先要使用 proxy_cache_path 这个指令(必须放在 http 上下文的顶层位置),然后在目标上下文中使用 proxy_cache 指令
配置示例
proxy_cache_path 有两个必填参数,第一个参数为 缓存目录,第二个参数keys_zone指定缓存名称和占用内存空间的大小(注:示例中的10m是对内存中缓存内容元数据信息大小的限制,如果想限制缓存总量大小,需要用 max_size 参数)
proxy_cache 的参数为之前指定的缓存名称
缓存管理的相关进程
在缓存工作中有两个附加进程:
(1)缓存管理器
定期检查缓存状态,看缓存总量是否超出限制,如果超出,就移除其中最少使用的部分
(2)缓存加载器
加载器只在nginx启动后运行一次,把缓存内容的元数据信息加载到内存空间,如果一次性加载全部缓存信息,会大量消耗资源,使nginx在启动后的几分钟里变慢,为避免此问题,有3种加载策略:
loader_threshold – 指定每次加载执行的时间
loader_files – 每次最多加载的数量
loader_sleeps – 每次加载的延时
例如:
proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300 loader_files=200;
指定缓存哪些请求
nginx默认会缓存所有 get 和 head 方法的请求结果,缓存的key默认使用请求字符串
(1)自定义key
例如 proxy_cache_key " request_uri cookie_nocache arg_comment;
如果任何一个参数值不为空,或者不等于0,nginx就不会查找缓存,直接进行代理转发
综合示例
nginx 缓存机制
三分钟看懂Nginx服务器的缓存原理和机制