概述
今天早上在上班的地铁上,看了一篇文章,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_tcp_proxy_module-master.zip
所以在这里用到了nginx的proxy_redirect指定修改被代理服务器返回的响应头中的location头域跟refresh头域数值 以下是截取nginx的一小段配置文档 server { listen 80; server_name www.boke.com; l
使用nginx作为http/https正向代理ipm包,包含ngx_http_proxy_connect_module 模块,附带了第三方图片代理配置,带有缓存,可直接做图片服务器 下载后执行:rpm -ivh nginx-1.12.2-1.el7_4.ngx.x86_64.rpm 打包教程:...
备用nginx代理模块
nginx_tcp_proxy_module-master 是nginx的TCP模块
尝试使用Nginx进行反向代理过程中出现如下错误: 代码如下: nginx: [emerg] “proxy_cache_path” directive is not allowed here in /etc/nginx/conf.d/default.conf:29 提示意思“proxy_cache_path指令不被允许”...
ngx_cache_purge 是 nginx 模块,此模块可以清理 nginx 的 FastCGI、proxy、 SCGI 和 uWSGI 的缓存。配置指令(相同位置语法)fastcgi_cache_purgesyntax: fastcgi_cache_purge on|off|<method> [from all|<ip> [.....
本篇文章主要介绍了Nginx启用proxy_cache缓存的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
用于nginx的http正向代理https使用的模块
此文比较详细讲述了Nginx与proxy共同搭建反向代理服务的配置方法
1、准备两个tomcat和一个nginx 1.1、tomcat: http://127.0.0.1:8080 1.2、tomcat:http://127.0.0.1:8081 1.3、nginx:http://127.0.0.1 2、反向代理proxy_pass 2.1、反向代理 2.2、反向代理-使用upstream 2.3、反向...
格式很简单: proxy_pass URL; 其中URL包含:传输协议(http://, https://等)、主机名(域名或者IP:PORT)、uri。 示例如下: proxy_pass http://www.xxx.com/; proxy_pass http://192.168.200.101:8080/uri; ...
顾名思义,proxy_buffer 是用于 proxy 模式的缓冲功能。本文介绍其基本用法。 buffer 是什么 buffer ,即缓冲区,它在 Nginx 上发挥的作用就是 启用一个缓冲区,先在这个缓冲区内进行存储,再把数据发送出去 。和...
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } (完整拷贝上面的内容server_name www.*****.com; 这里面的域名即是来访域名 proxy_pass http://192.168.45.1:8045; 这里面的域名...
1、首先我们回顾一下nginx中location的相关知识 1)location的匹配指令: ~ #波浪线表示执行一个正则匹配,区分大小写 ~* #表示执行一个正则匹配,不区分大小写 ^~ #^~表示普通字符匹配,不是正则匹配。如果该...
当待验证的客户端证书是由intermediate-CA签发,而非有root-CA签发时,需要在proxy_ssl_trusted_certificate中配置intermediate-CA和root-CA组成的证书链文件 也就是说,直接尝试使用中级 CA 来验证客户端是无法通过...