本文研究nginx提供的缓存功能,下面是实操记录。

这篇博文基于前面文章的基础上搭建,至始至终都是root用户操作

http://blog.csdn.net/tao_627/article/details/78953800

缓存清除功能需要借助第三方模块ngx_cache_purge,其链接如下

https://github.com/FRiCKLE/ngx_cache_purge

下载其源码并安装进nginx中去

cd /usr/local/src
git clone https://github.com/FRiCKLE/ngx_cache_purge.git

编译

cd nginx-1.12.2
./configure --with-http_ssl_module \
--with-pcre=/usr/local/src/pcre-8.41 \
--with-zlib=/usr/local/src/zlib-1.2.11 \
--with-openssl=/usr/local/src/openssl-1.1.0g \
--with-http_stub_status_module \
--add-module=/usr/local/src/ngx_cache_purge

make

make install

配置
在nginx.conf中添加如下配置块

proxy_cache_path  /usr/local/nginx/cache1  levels=1:2 keys_zone=cache1:100m inactive=1d max_size=2g;add_header X-Cache $upstream_cache_status;location ^~ /static/ {proxy_cache  cache1;proxy_cache_key  $host$uri$is_args$args;proxy_cache_valid 200 304 301 302 10m;proxy_cache_methods GET; proxy_cache_min_uses 3;proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;proxy_pass  http://127.0.0.1:18080;expires 30d;access_log  logs/cache.log main;
}

在相同的server块中,使用单独的location来配置缓存清除功能

location ~ /purge(/.*) {allow              127.0.0.1;deny               all;proxy_cache_purge  cache1 $host$1$is_args$args;access_log  logs/cache.log main;
}

完整的nginx.conf配置如下:

user  root;
worker_processes  1;  error_log  logs/error.log  info;
pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  logs/access.log  main;access_log  logs/access.log  main;sendfile        on;keepalive_timeout  65;proxy_cache_path  /usr/local/nginx/cache1  levels=1:2 keys_zone=cache1:100m inactive=1d max_size=2g;server {listen       80;server_name  localhost;#access_log  logs/host.access.log  main;add_header X-Cache $upstream_cache_status;location ^~ /static/ {proxy_cache  cache1;proxy_cache_key  $host$uri$is_args$args;proxy_cache_valid 200 304 301 302 10m;proxy_cache_methods GET;proxy_cache_min_uses 3;proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;proxy_pass  http://127.0.0.1:18080;expires 30d;access_log  logs/cache.log main;-}location ~ /purge(/.*) {proxy_cache_purge  cache1 $host$1$is_args$args;allow              127.0.0.1;deny               all;access_log  logs/cache.log main;}location /ngx_status {stub_status;access_log off;allow 127.0.0.1;deny all;}location / {root   html;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}server {listen       18080;server_name  localhost;location ^~ /static/ {root   html;expires  10d;}location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

检测并使配置生效

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

下面是/usr/local/nginx下面的目录结构截图

ps auxf | grep nginx | grep -v grep

注意此时发现已经多了一个cache manager进程。

测试

要求现在的nginx cache功能不能和原来添加的模块功能相冲突。下面逐一进行测试。
curl -vo /dev/null 'http://127.0.0.1/'

curl -v http://127.0.0.1/ngx_status

curl -vo /dev/null 'http://127.0.0.1/static/a.gif'

根据配置,累计请求同一请求3次之后,才会缓存主

curl -vo /dev/null 'http://127.0.0.1/purge/static/a.gif'

从Firefox浏览器中访问的结果

再次请求该资源,发现缓存状态是MISS

curl -vo /dev/null 'http://127.0.0.1/static/a.gif'

测试中发现的问题

选项proxy_cache_min_uses表示同一个请求超过多少次才放入缓存,但是我发现,使用ngx_cache_purge模块删除之后,再次发送同一个请求,发现两次就缓存了。个人感觉这是个模块兼容性的bug。

参考文献
[1].http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache
[2].https://github.com/FRiCKLE/ngx_cache_purge
[3].http://phl.iteye.com/blog/2256356
[4].http://blog.csdn.net/czp11210/article/details/28596649
[5].http://www.jackieathome.net/archives/411.html
[6].http://blog.csdn.net/dengjiexian123/article/details/53386586

在CentOS 6.9 x86_64上开启nginx 1.12.2的proxy_cache缓存配置相关推荐

  1. 在CentOS 6.9 x86_64上开启nginx 1.12.2的stub_status模块(ngx_http_stub_status_module)监控

    Nginx中的stub_status模块主要用于查看Nginx的一些状态信息.  本模块默认是不会编译进Nginx的,如果你要使用该模块,则要在编译安装Nginx时指定: ./configure -- ...

  2. 在CentOS 6.9 x86_64上安装nginx 1.12.2

    比较详细的教程参见以前的博文 http://blog.csdn.net/tao_627/article/details/60957521 这里只给出简略步骤,没有截图,自始至终使用root操作 目前最 ...

  3. 在CentOS 6.8 x86_64上安装nginx 1.10.3

    本文档记录了完全使用最新源码来编译安装nginx最新版1.10.3,所有的依赖也是最新的,便于第三方nginx模块开发 假定使用root身份安装 目前最新的源码地址汇总 ftp://ftp.csx.c ...

  4. 在CentOS 6.9 x86_64上搭建全功能的OpenResty 1.13.6.1笔记

    好久没有玩OpenResty,这段时间机会难得,赶紧实践一下.下面是我在rMBP的CentOS 6.9 x86_64虚拟机上安装目前最新版OpenResty 1.13.6.1的笔记. OpenRest ...

  5. 在CentOS 6.6 x86_64上安装SystemTap/Perf+FlameGraph玩转火焰图实录

    下面是我结合网上资料摸索出的可行的操作方法,记录在这样,以备后面继续研究.操作系统是CentOS 6.6 x86_64. 1.将内核版本升级到最新版 因为我机器上CentOS 6.6的内核版本号是2. ...

  6. 在CentOS 7.7 x86_64上安装python3的selenium 3模块实录

    安装selenium3模块 pip3 install selenium 如果上面的命令因为网络问题,重试多次仍失败,可以尝试下面的命令 pip3 install selenium -i http:// ...

  7. 在CentOS 6.8 x86_64上安装ATS 6.2.1实录

    我的博客上已经有很多这样的ats安装实录了,这次的笔记有些不一样,因为它是ATS目前最新的LTS版本6.2.1的安装,写出来更多的是整理自己的思路,因为很多东西搞过不整理,过一段时间就完全忘记掉了. ...

  8. 在CentOS 6.3 64bit上安装Nginx 1.8.0

    根据工作需要,现在需要安装nginx服务器,本来可以直接安装别人制作好的rpm包的,但是本着爱折腾和时刻尝鲜的精神,我决定从官网下载最新的nginx源码来安装,下面记录了我的安装过程. 下面的安装假定 ...

  9. nginx proxy_cache 缓存配置

    前言: 由于本人工作原因,涉及到网络直播领域,其中视频的回放下载,涉及到了一些视频下载方面的技术.针对于一个完整视频的下载,目前市面上的主流做法是,先将整个视频流切片,存储到文件服务器中,在用户需要观 ...

最新文章

  1. 每日一皮:强大的sudo ...
  2. pexpect.spawn timeout 无限_【元气骑士最新无限钻石版】元气骑士游戏无限钻石版下载...
  3. POJ3666序列最小差值
  4. 使用 docker 编译运行 abp 项目
  5. SwiftyJSON的基本用法
  6. 教你快速录制gif动图
  7. WT2003H语音芯片在红绿灯上的运用,一款可远程更新的语音IC方案
  8. 解决因多网卡导致dubbo注册到ZK的IP错误问题,dubbox(当当,2.8.4)升级至dubbo(Apache,2.7.15)并集成
  9. bin文件读写 - C/C++
  10. C#篇-值类型和引用类型
  11. Pyton 类和对象
  12. ADAS高级辅助驾驶视觉系统(Advanced Driver Assistant System)
  13. 手牵手系列之TypeScript开发环境搭建
  14. 爆笑:学生假条和老师批示
  15. flutter 复制粘贴默认英文显示问题
  16. EzOES报盘、接口及平台
  17. 用静态KML脚本在GoogleEarth上实现动态效果
  18. Gdevops北京站归来
  19. 电击手表设计#开源#
  20. 科创人·SUSE大中华区董事长江永清:真开源要有打磨技术的匠心,要能持续创造社会价值

热门文章

  1. PyTorch 笔记(07)— Tensor 的归并运算(torch.mean、sum、median、mode、norm、dist、std、var、cumsum、cumprod)
  2. C# 运算符的优先级
  3. 哈佛管理论丛:谁背上了令人讨厌的猴子
  4. r语言echarts画箱线图_echarts学习笔记之箱线图的分析与绘制详解
  5. mysql数据类型分析_MYSQL数据类型分析整理
  6. 谷歌pixel3axl开发者模式_谷歌 Android Q 和 iOS 12.3新测试版发布,看完心动了!
  7. 计算机专业黑板报迎新,大学开学迎新黑板报
  8. php sql中regexp,[NCTF2019]SQLi(regexp注入)
  9. 能量平衡_500kA 铝电解槽的能量平衡分析
  10. java工程化_(二)Java工程化--Maven实践(示例代码)