在CentOS 6.9 x86_64上开启nginx 1.12.2的proxy_cache缓存配置
本文研究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缓存配置相关推荐
- 在CentOS 6.9 x86_64上开启nginx 1.12.2的stub_status模块(ngx_http_stub_status_module)监控
Nginx中的stub_status模块主要用于查看Nginx的一些状态信息. 本模块默认是不会编译进Nginx的,如果你要使用该模块,则要在编译安装Nginx时指定: ./configure -- ...
- 在CentOS 6.9 x86_64上安装nginx 1.12.2
比较详细的教程参见以前的博文 http://blog.csdn.net/tao_627/article/details/60957521 这里只给出简略步骤,没有截图,自始至终使用root操作 目前最 ...
- 在CentOS 6.8 x86_64上安装nginx 1.10.3
本文档记录了完全使用最新源码来编译安装nginx最新版1.10.3,所有的依赖也是最新的,便于第三方nginx模块开发 假定使用root身份安装 目前最新的源码地址汇总 ftp://ftp.csx.c ...
- 在CentOS 6.9 x86_64上搭建全功能的OpenResty 1.13.6.1笔记
好久没有玩OpenResty,这段时间机会难得,赶紧实践一下.下面是我在rMBP的CentOS 6.9 x86_64虚拟机上安装目前最新版OpenResty 1.13.6.1的笔记. OpenRest ...
- 在CentOS 6.6 x86_64上安装SystemTap/Perf+FlameGraph玩转火焰图实录
下面是我结合网上资料摸索出的可行的操作方法,记录在这样,以备后面继续研究.操作系统是CentOS 6.6 x86_64. 1.将内核版本升级到最新版 因为我机器上CentOS 6.6的内核版本号是2. ...
- 在CentOS 7.7 x86_64上安装python3的selenium 3模块实录
安装selenium3模块 pip3 install selenium 如果上面的命令因为网络问题,重试多次仍失败,可以尝试下面的命令 pip3 install selenium -i http:// ...
- 在CentOS 6.8 x86_64上安装ATS 6.2.1实录
我的博客上已经有很多这样的ats安装实录了,这次的笔记有些不一样,因为它是ATS目前最新的LTS版本6.2.1的安装,写出来更多的是整理自己的思路,因为很多东西搞过不整理,过一段时间就完全忘记掉了. ...
- 在CentOS 6.3 64bit上安装Nginx 1.8.0
根据工作需要,现在需要安装nginx服务器,本来可以直接安装别人制作好的rpm包的,但是本着爱折腾和时刻尝鲜的精神,我决定从官网下载最新的nginx源码来安装,下面记录了我的安装过程. 下面的安装假定 ...
- nginx proxy_cache 缓存配置
前言: 由于本人工作原因,涉及到网络直播领域,其中视频的回放下载,涉及到了一些视频下载方面的技术.针对于一个完整视频的下载,目前市面上的主流做法是,先将整个视频流切片,存储到文件服务器中,在用户需要观 ...
最新文章
- 每日一皮:强大的sudo ...
- pexpect.spawn timeout 无限_【元气骑士最新无限钻石版】元气骑士游戏无限钻石版下载...
- POJ3666序列最小差值
- 使用 docker 编译运行 abp 项目
- SwiftyJSON的基本用法
- 教你快速录制gif动图
- WT2003H语音芯片在红绿灯上的运用,一款可远程更新的语音IC方案
- 解决因多网卡导致dubbo注册到ZK的IP错误问题,dubbox(当当,2.8.4)升级至dubbo(Apache,2.7.15)并集成
- bin文件读写 - C/C++
- C#篇-值类型和引用类型
- Pyton 类和对象
- ADAS高级辅助驾驶视觉系统(Advanced Driver Assistant System)
- 手牵手系列之TypeScript开发环境搭建
- 爆笑:学生假条和老师批示
- flutter 复制粘贴默认英文显示问题
- EzOES报盘、接口及平台
- 用静态KML脚本在GoogleEarth上实现动态效果
- Gdevops北京站归来
- 电击手表设计#开源#
- 科创人·SUSE大中华区董事长江永清:真开源要有打磨技术的匠心,要能持续创造社会价值
热门文章
- PyTorch 笔记(07)— Tensor 的归并运算(torch.mean、sum、median、mode、norm、dist、std、var、cumsum、cumprod)
- C# 运算符的优先级
- 哈佛管理论丛:谁背上了令人讨厌的猴子
- r语言echarts画箱线图_echarts学习笔记之箱线图的分析与绘制详解
- mysql数据类型分析_MYSQL数据类型分析整理
- 谷歌pixel3axl开发者模式_谷歌 Android Q 和 iOS 12.3新测试版发布,看完心动了!
- 计算机专业黑板报迎新,大学开学迎新黑板报
- php sql中regexp,[NCTF2019]SQLi(regexp注入)
- 能量平衡_500kA 铝电解槽的能量平衡分析
- java工程化_(二)Java工程化--Maven实践(示例代码)