文档章节

使用ngx_slowfs_cache模块构建本地缓存

汉克斯
 汉克斯
发布于 2015/08/20 13:55
字数 929
阅读 173
收藏 1
点赞 0
评论 0

       Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成,前者用于反向代理时,对后端内容源服务器进行缓存,后者主要用于对FastCGI的动态程序进行缓存。两者的功能基本上一样。

       下午在翻看nginx所有addone模块的是,发现了ngx_slowfs_cache,它扩充了Nginx的缓存功能,通过 ngx_slowfs_cache 可以实现本地站点静态文件缓存(配合root指令使用)。此功能为低速的存储设备创建快速缓存提供了可能。举个例子: 

  • 网站文件存放在一个网络存储上(network disks),缓存文件则存储在本地磁盘上。 

  • 网络存储使用的是 7200转的 SATA硬盘组,而本地磁盘使用的是  15000转的 SAS硬盘。

通过 ngx_slowfs_cache 将静态文件缓存到要地磁盘后,访问速度将明显改善。而且通常缓存是先放到内存中,从内存中命中自然要比硬盘上命中快很多了。

ngx_slowfs_cache 模块同时也提供了“cache_purge”功能,用于清除指定URL的缓存。 

ngx_slowfs_cache 当前的版本为:ngx_slowfs_cache-1.5 

ngx_slowfs_cache 的下载地址是:http://labs.frickle.com/nginx_ngx_slowfs_cache/

ngx_slowfs_cache 配置参数(英文) 

slowfs_cache zone_name (context: http, server, location) 

-------------------------------------------------------- 

设置用来放置缓存的区域(使用前需要通过slowfs_cache_path来定义).

slowfs_cache_key key (context: http, server, location) 

------------------------------------------------------ 

设置缓存的key值

slowfs_cache_purge zone_name key (context: location) 

---------------------------------------------------- 

设置缓存区和key值,用于从缓存中清除对应的文件

slowfs_cache_path path [levels] keys_zone=zone_name:zone_size [inactive] [max_size] (context: http) 

--------------------------------------------------------------------------------------------------- 

设置缓存区域 

path:存放缓存的路径 

levels:缓存文件的目录级数 

zone_name:缓存区域的名字 

zone_size:内存缓存使用的大小 

inactive:如果缓存数据在inactive定义的时间内未被访问,就被移除缓存 

max_size:硬盘缓存大小

slowfs_temp_path path [level1] [level2] [level3] (context: http) 

---------------------------------------------------------------- 

设置一个临时区域,缓存被存放在缓存区之前就先放在这里 

Default: "/tmp 1 2"

slowfs_cache_min_uses number (context: http, server, location) 

-------------------------------------------------------------- 

文件最少被访问多少次才会被放入缓存区 

Default: "1"

slowfs_cache_valid [reply_code] time (context: http, server, location) 

---------------------------------------------------------------------- 

设置文件被缓存的时间

slowfs_big_file_size size (context: http, server, location) 

----------------------------------------------------------- 

Sets minimum file size for "big" files. Worker processes fork() before 

they start copying "big" files to avoid any service disruption. 

Default: "128k"

ngx_slowfs_cache 配置变量 

$slowfs_cache_status 

-------------------- 

Represents availability of cached file. 

Possible values are: MISS, HIT and EXPIRED.

ngx_slowfs_cache 的安装 

1、下载ngx_slowfs_cache,我们将得到一个文件 ngx_slowfs_cache-1.5.tar.gz 

2、解压包 tar zxf ngx_slowfs_cache-1.5.tar.gz 得到目录 ngx_slowfs_cache-1.5 

3、执行nginx编译,添加一条编译指令 --add-module=../ngx_slowfs_cache-1.5 即可将ngx_slowfs_cache模块编入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_slowfs_cache-1.5

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

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

ngx_slowfs_cache 配置举例

http { 
    slowfs_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=cache_test:10m inactive=1h max_size=10m; 
    location / { 
        root   html; 
        index  index.html index.htm index.php; 
        add_header X-Cache X-HIT-from-nginx; 
        slowfs_cache cache_test; 
        slowfs_cache_key $uri; 
        slowfs_cache_valid 1h; 
    } 
    location ~ /purge(/.*) { 
        allow 127.0.0.1;          
        allow 192.168.28.1; 
        deny all; 
        slowfs_cache_purge cache_test $1; 
    } 
}

ngx_slowfs_cache 的使用 

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

http://192.168.28.128/index.html

可以看到如下图所示,文件已经被缓存 

清除缓存只需要在网页中访问:http://192.168.28.128/purge/index.html即可,如下图

当然也可以在服务器上执行:curl http://127.0.0.1/purge/index.html来清除缓存,服务器返回内容如下

[root@linux01 nginx]# curl http://127.0.0.1/purge/index.html 
<html> 
<head><title>Successful purge</title></head> 
<body bgcolor="white"> 
<center><h1>Successful purge</h1> 
<br>Key : /index.html 
<br>Path: /usr/local/nginx/cache/b/82/d1546d731a9f30cc80127d57142a482b 
</center> 
<hr><center>nginx/0.8.50</center> 
</body> 
</html>


参考:http://labs.frickle.com/nginx_ngx_slowfs_cache/README


© 著作权归作者所有

共有 人打赏支持
汉克斯
粉丝 15
博文 13
码字总数 19282
作品 0
CTO(技术副总裁)
Nginx学习之九:实践学习指南

Nginx基础 1. nginx安装 2. nginx 编译参数详解 3. nginx安装配置+清缓存模块安装 4. nginx+PHP 5.5 5. nginx配置虚拟主机 6. nginx location配置 7. nginx root&alias文件路径配置 8. ngxht...

boonya
2014/07/09
0
0
nginx本地缓存模块ngx_slowfs_cache

nginx proxy反向代理本身就支持缓存的,但是如果没有使用到nginx反向代理的话,就需要使用ngxslowfscache模块来实现本地站点静态文件缓存,同时还为低速的存储设备创建快速缓存。 1. 安装ngx...

小运
2013/08/23
739
0
nginx 静态缓存插件--ngx_slowfs_cache

ngxslowfscache 是 nginx 模块,允许缓存静态文件(使用 root 指令管理)。 这使得能够为存储在慢文件系统上的文件创建快速缓存。 当缓存放置在与原点相同的速度磁盘上时,使用此模块没有意义...

匿名
2016/11/29
324
0
Nginx学习之五:Nginx第三方模块

第三方模块 这些模块不被官方所支持,亦未必能跨越Nginx的版本兼容。不过其中有些模块证明是对多数用户是有用的。只在于个人的风险问题。 编译第三方模块 第三方模块和 Nginx资源是一起被编译...

boonya
2014/07/04
0
0
Nginx图片防盗链、缓存和压缩的示例

一、图片防盗链 简单即是最好,最简单的方法是用ngxhttpreferermmodule模块的validreferers参数来构建,这也是最常见和最常用的方法: location ~* .(gif|jpg|jpeg|png|bmp|swf)$ { valid_r...

sima2004
06/26
0
0
如何将新的缓存算法加载到nginx里面

写好一个新的缓存算法,如何将它用nginx实现呢?是改写proxycache和slowfscache呢?还是加载第三方模块呢?nginx是开源的应该可以改写的吧?

踏步只猫
2015/04/15
43
0
Nginx配置文件详细介绍

Nginx的主配置文件为“/etc/nginx/nginx.conf”,在主配置文件中使用指令又包含了其他的片段配置文件“/etc/nginx/conf.d/”(源代码安装时可以自己指定配置文件位置)。在配置文件中首先需要...

正经的青年
2017/11/06
0
0
CentOS 7.4 Tengine安装配置详解(七)

十六、缓存及缓存清理 1、修改node1配置文件nginx.conf: (1)在http配置段中增加如下代码: proxycachepath /usr/local/tengine/cache levels=1:1:2 keyszone=mycache:200m inactive=15d ...

Marion0728
06/12
0
0
Nginx服务简介

Nginx概述 Nginx (engine x) 是一个高性能的http和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开...

a_pan
2017/10/27
0
0
nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除

一,nginx反向代理配置 #tomcat 显然就是用户访问www.wolfdream.com(需要设置本地localhost,将www.wolfdream.com指向nginx所在IP)的时候(或将www.wolfdream.com直接写在nginx所在的IP地址)...

晨曦之光
2012/03/09
925
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周一乱弹 —— 如果是你喜欢的女同学找你借钱

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享Michael Learns To Rock的单曲《Fairy Tale》 《Fairy Tale》- Michael Learns To Rock 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
26分钟前
7
3
NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
11
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部