概述
今天早上在上班的地铁上,看了一篇文章,proxy_cache可以支持nginx的缓存。所以兴致来了,就弄了一下。微信的文章在后面已经给出。
在反向代理服务器上,配置代理缓存,默认开启get和head请求的缓存,如果需要缓存post,还需要特殊处理。因此这个时候我们需要面向缓存编程,有些地方要特殊处理。最终的配置文件可以查看附件。
proxy_cache基础配置
http节点添加
#levels设置目录层次,第一层目录只有一个字符,是由levels=1:2设置,总共二层目录,子目录名字由二个字符组成。如果启用了反向代理的gzip压缩,则本地磁盘中存储的文件是解压后的文件。
#keys_zone设置缓存名字和共享内存大小
#inactive在指定时间内没人访问则被删除在这里是1天
#max_size最大缓存空间
proxy_cache_path /opt/nginx/nginx-1.9.4/proxy_cache levels=1:2 keys_zone=content:20m inactive=1d max_size=100m;
server节点添加
location ^~ / {
proxy_pass http://192.168.56.1:8080/;
proxy_cache content; #根keys_zone后的内容对应
proxy_cache_valid 200 304 301 302 10d; #哪些状态缓存多长时间
#proxy_cache_valid any 1d; #其他的缓存多长时间,或者不缓存
#proxy_cache_methods GET; # 默认是get和head
proxy_cache_key $host:$server_port$uri$is_args$args; #通过key来hash,定义KEY的值
#[host]192.168.56.2 [server_port]8080 [uri]/cache_ehcache-2.10.0_web/expire [is_args] [args]-
proxy_cache_min_uses 3; #只要统一个url,不管间隔多久,总次数访问到达3次,就开始缓存。
proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; # 如果任何一个参数值不为空,或者不等于0,nginx就不会查找缓存,直接进行代理转发
}
缓存生效后如下图
可以进到具体目录里,VI查看文件,正式我们页面看到的内容。
另外,缓存的时间单位,有s,m,d 相信大家能自己猜出来。
proxy_cache_min_uses这个参数,是指同一个url,不管时间间隔多长,是否在一个缓存周期外,只要总次数到达proxy_cache_min_uses次数,就会触发缓存功能。后续缓存失效以后,只要访问一次,又会缓存。
proxy_cache_bypass是绕开缓存,其中可以通过cookie,和url的get参数进行控制。取得cookie参数的前缀是$cookie_,取得url参数的前缀是$arg_,其他的杜泽可以自行领略。
注意:当在运行时,删除proxy_cache_path缓存目录时,则永远无法缓存
高级用法(像CDN一样)
更新时间:2015-10-28
所有的缓存,都遵循源策略,就像CDN一样。Cache-Control以下4个属性,出现任意一个,则不缓存。
no-cache, no-store, max-age=0, s-maxage=0
其中max-age和s-maxage大于0的时候,则根据源站策略进行缓存,proxy_cache_valid的缓存设置时间失效。
当 max-age=3, s-maxage=5,同时配置的时候,nginx缓存时间以s-maxage时间为主。
遵循源和proxy_cache_path里面的时间有冲突的时候,策略如下:
当proxy_cache_path时间大于遵循源的时候,遵循源时间到期,请求时候,重新设置并覆盖磁盘上的文件;
当proxy_cache_path时间小于遵循源的时候,则proxy_cache_path到期的时候,重新到源站获取数据,遵循源策略失效。
更新时间:2015-11-11
缓存清理模块ngx_cache_purge
http://phl.iteye.com/blog/2256356
更新时间:2015-11-14
proxy_cache_revalidate on的参数设置,代理缓存的更新验证。
http://phl.iteye.com/blog/2256857
参考文章
http://mp.weixin.qq.com/s?__biz=MzA4Nzc4MjI4MQ==&mid=210913347&idx=1&sn=6991673fe0cd6be3559b192832b3ebc3&scene=1&srcid=10136jldL7Gm2jn05O73BfJi#rd
http://blog.51yip.com/apachenginx/1018.html
http://blog.chenlb.com/2010/04/nginx-proxy-cache.html
- 大小: 9.4 KB
分享到:
相关推荐
在讨论Nginx的proxy_redirect指令时,我们首先要明确其在Nginx配置中的作用和重要性。proxy_redirect指令主要用于在反向代理过程中修改响应头中的Location和Refresh字段值。在Web服务器配置中,特别是在使用Nginx...
ngx_http_proxy_connect_module是一个针对Nginx服务器的第三方模块,主要功能是支持HTTP代理的"CONNECT"方法。在默认情况下,Nginx仅处理...在部署和使用时,必须充分理解其工作原理和潜在风险,并采取必要的安全措施。
使用nginx作为http/https正向代理ipm包,包含ngx_http_proxy_connect_module 模块,附带了第三方图片代理配置,带有缓存,可直接做图片服务器 下载后执行:rpm -ivh nginx-1.12.2-1.el7_4.ngx.x86_64.rpm 打包教程:...
nginx_tcp_proxy_module-master.zip
"nginx_tcp_proxy_module-master"就是这样一个模块,它使Nginx具备了TCP代理的能力,可以用于负载均衡、流量控制等多种网络服务场景。 **TCP代理的基本概念** TCP(Transmission Control Protocol)是一种面向连接...
下面详细介绍如何实现 Nginx 静态文件缓存的三个步骤。 ### 第一步:配置 HTTP 级别的缓存 在 `nginx.conf` 文件中,我们需要添加如下配置以设置 HTTP 缓存: ```nginx http { # ... proxy_cache_path /usr/...
Nginx提供的proxy_cache功能是针对反向代理场景下的缓存机制,可以有效减少后端服务器的压力并提高响应速度。proxy_cache机制允许Nginx将从后端服务器获得的静态内容缓存到磁盘上,当相同请求再次发生时,可以直接从...
增加了ngx_http_proxy_connect_module模块的,已经编译好的windows exe文件...使用方法,放到从官网下的nginx windows包目录下,代替原来的exe文件。 代理https需要增加配置 proxy_connect; proxy_connect_allow 443;
尝试使用Nginx进行反向代理过程中出现如下错误: 代码如下: nginx: [emerg] “proxy_cache_path” directive is not allowed here in /etc/nginx/conf.d/default.conf:29 提示意思“proxy_cache_path指令不被允许”...
海康摄像头是一种广泛应用的安防监控设备,而Nginx是一款高性能的HTTP和反向代理服务器,常用于负载均衡、内容缓存和安全防护。 在描述中提到的"海康摄像头实时预览通过nginx反向代理",意味着我们需要设置Nginx...
- 企业网络出口:企业可以使用Nginx作为出口代理,统一管理员工的互联网访问,实现访问控制、审计等功能。 - 测试环境:在测试环境中,可以模拟真实网络环境,通过Nginx代理来测试应用程序的HTTPS连接。 - 个人...
ngx_cache_purge 是 nginx 模块,此模块可以清理 nginx 的 FastCGI、proxy、 SCGI 和 uWSGI 的缓存。配置指令(相同位置语法)fastcgi_cache_purgesyntax: fastcgi_cache_purge on|off|<method> [from all|<ip> [.....
在Nginx配置中,`location`指令是用于定义URL路由和处理规则的关键部分,它决定了请求应如何被代理、重定向或静态文件服务。在本文中,我们将深入探讨`location`指令的匹配机制以及在多个`if`语句中使用`proxy_pass`...
当我们谈论`proxy_pass`和`rewrite`时,这是两种强大的功能,它们可以协同工作以实现复杂的URL路由和反向代理设置。下面我们将深入探讨这两个指令的工作原理、用法以及它们在实际场景中的应用。 1. **proxy_pass**...
此文比较详细讲述了Nginx与proxy共同搭建反向代理服务的配置方法