admin 管理员组

文章数量: 887021


2024年1月17日发(作者:bootstrap table保留两位小数)

运维

nginx ngx_cache_purge模块介绍

Nginx从 0.7.48版本开始,支持了类似Squid的缓存功能。这个缓存是把URL及相关组合当作Key,用md5编码哈希后保存在硬盘上,所以它可以支持任意 URL链接,同时也支持404/301/302这样的非200状态码。虽然目前官方的Nginx Web缓存服务只能为指定URL或状态码设置过期时间,不支持类似Squid的PURGE指令,手动清除指定缓存页面。

ngx_cache_purge 是由 开发的一个Nginx第三方模块。通过该模块使得Nginx可以像squid使用PURGE指令手动清除指定URL的缓存页面。

ngx_cache_pure 当前的版本为:ngx_cache_purge-1.1

ngx_cache_pure 的下载地址是:/nginx_ngx_cache_purge/

ngx_cache_pure 的安装

1、下载ngx_cache_pure,我们将得到一个文件 ngx_cache_

2、解压包 tar zxf ngx_cache_ 得到目录

ngx_cache_purge-1.1

3、执行nginx编译,添加一条编译指令 –add-module=../ngx_cache_purge-1.1

即可将ngx_cache_purge模块编入nginx,完成的编译参数如:

./configure --user=www --group=www --prefix=/usr/local/nginx

--with-http_ssl_module --with-http_sub_module

--with-http_stub_status_module --add-module=../ngx_cache_purge-1.1

4、执行编译安装 make && make install

如果没有意外错误,至此您已经完成了 ngx_cache_pure 模块的安装。

ngx_cache_pure 的配置举例

http {

#注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区

proxy_temp_path /data0/proxy_temp_dir;

#设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。

proxy_cache_path /data0/proxy_cache_dir levels=1:2

keys_zone=cache_one:200m inactive=1d max_size=30g;

upstream backend_server {

server 192.168.8.43:80 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.8.44:80 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.8.45:80 weight=1 max_fails=2 fail_timeout=30s;

}

server

{

listen 80;

server_name 192.168.8.42;

index ;

root /data0/htdocs/www;

location /

{

#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。

proxy_next_upstream http_502 http_504 error timeout

invalid_header;

proxy_cache cache_one;

#对不同的HTTP状态码设置不同的缓存时间

proxy_cache_valid 200 304 12h;

#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内

proxy_cache_key $host$uri$is_args$args;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_pass backend_server;

expires 1d;

}

#用于清除缓存,假设一个URL为192.168.8.42/,通过访问192.168.8.42/purge/就可以清除该URL的缓存。

location ~ /purge(/.*)

{

#设置只允许指定的IP或IP段才可以清除URL缓存。

allow 127.0.0.1;

allow 192.168.0.0/16;

deny all;

proxy_cache_purge cache_one $host$1$is_args$args;

}

#扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。

location ~ .*.(php|jsp|cgi)?$

{

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_pass backend_server;

}

access_log off;

}

}

ngx_cache_pure 的使用

按如上配置完成以后,要确认一个文件是否被cache或要清除一个指定URL的缓存,只需要访问:

192.168.8.42/purge/application/my/view/images/

purge 是要调用PURGE指令

/application/my/view/images/ 是你要确认或清除缓存的URL路径


本文标签: 缓存 清除 指定 模块 编译