为Nginx添加proxy_cache模块,对视频进行缓存
Nginx是高性能的HTTP服务器,通过Proxy Cache可以使其对视频进行缓存。
其原理就是把视频按照一定的规则存在本地硬盘,并且会在内存中缓存常用的资源,从而加快视频的响应。
假设nginx1.3.8已经安装成功。
1、安装Purge模块,Purge模块被用来清除缓存的。
安装之前先停止nginx ,$ /usr/local/nginx/sbin/nginx -s quit
$ wget http://labs.frickle.com/files/ngx_cache_purge-2.0.tar.gz
$ tar zxf ngx_cache_purge-2.0.tar.gz
nginx和ngx_cache_purge必须在同一级目录
$ cd nginx-1.3.8
查看编译参数
$ /usr/local/nginx/sbin/nginx -V
在原有的编译参数后面加上--add-module=../ngx_cache_purge-2.0
$ ./configure --user=www --group=www --prefix=/usr/local/nginx --add-module=../nginx_mod_h264_streaming-2.2.7 \
--with-http_flv_module --with-http_stub_status_module --with-http_ssl_module --with-http_mp4_module \
--with-http_gzip_static_module --with-pcre=../pcre-8.32 --with-pcre-jit --add-module=../ngx_cache_purge-2.0
$ make && make install
2、配置proxy_cahe
$ vim /usr/local/nginx/conf/nginx.conf
修改配置文件。
proxy_temp_path /data/ngx_cache 1 2;
#keys_zone=cache1:100m 表示这个zone名称为cache1,分配的内存大小为100MB
#/data/ngx_cache/cache1 表示cache1这个zone的文件要存放的目录
#levels=1:2 表示缓存目录的第一级目录是1个字符,第二级目录是2个字符,即/data/ngx_cache/cache1/a/1b这种形式
#inactive=1d 表示这个zone中的缓存文件如果在1天内都没有被访问,那么文件会被cache manager进程删除掉
#max_size=10g 表示这个zone的硬盘容量为10GB
proxy_cache_path /data/ngx_cache/cache1 levels=1:2 keys_zone=cache1:100m inactive=1d max_size=10g;
server {
listen 80;
server_name localhost;
#在日志格式中加入$upstream_cache_status
log_format format1 '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $http_x_forwarded_for $upstream_cache_status $request_time';
access_log log/access.log format1;
location /group1 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://group1;
#access_log off;
#设置资源缓存的zone
proxy_cache cache1;
#设置缓存的key
proxy_cache_key $host$uri$is_args$args;
#设置状态码为200和304的响应可以进行缓存,并且缓存时间为30分钟
proxy_cache_valid 200 304 30m;
expires 1d;
#$upstream_cache_status表示资源缓存的状态,有HIT MISS EXPIRED三种状态
add_header X-Cache $upstream_cache_status;
}
#配置Purge
#以下是nginx中的Purge配置片段
location ~ /purge(/.*) {
#允许的IP
allow 127.0.0.1;
#10网段的都可以访问
allow 192.168.10.0/24;
deny all; #其他的禁止访问
proxy_cache_purge cache1 $host$1$is_args$args;
}
}
配置完毕,:wq! 保存退出
退出nginx,并重新启动
$ /usr/local/nginx/sbin/nginx -s quit
$ /usr/local/nginx/sbin/nginx
***********************************************
启动nginx若出现错误“nginx: [emerg] unknown directive "proxy_cache_purge" in /usr/local/nginx/conf/nginx.conf:96”
表示模块没安装成功,需要安装pcre
$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.32.tar.gz
$ tar zxf pcre-8.32.tar.gz
$ cd pcre-8.32
$ ./configure
$ make && make install
安装完pcre后重新执行安装nginx即可。
***********************************************
$upstream_cache_status包含以下几种状态:
MISS 未命中,请求被传送到后端
HIT 缓存命中
EXPIRED 缓存已经过期请求被传送到后端
UPDATING 正在更新缓存,将使用旧的应答
STALE 后端将得到过期的应答
BYPASS 缓存被绕过了
清除缓存
使用方式:
$ wget http://192.168.10.16/purge/uri
其中uri为资源的URI,如果缓存的资源的URL为 http://192.168.10.16/group2/M00/00/46/ooYBAFIODMyAUSk3ANFjhglUy6s933.flv,
那么访问 http://192.168.10.16/purge/group2/M00/00/46/ooYBAFIODMyAUSk3ANFjhglUy6s933.flv则会清除缓存。
命中率
保存如下代码为hit_rate.sh:
#!/bin/bash
#
# proxy_cache hit rate
if [ $1x != x ] then
if [ -e $1 ] then
HIT=`cat $1 | grep HIT | wc -l`
ALL=`cat $1 | wc -l`
#Hit_rate=`echo "scale=2;($HIT/$ALL)*100" | bc`
Hit_rate=`awk 'BEGIN{printf "%.2f%\n",('$HIT'/'$ALL')*100}'`
echo "Hit rate=$Hit_rate%"
else
echo "$1 not exsist!"
fi
else
echo "usage: ./hit_rate.sh file_path"
fi
使用方式
$ ./hit_rate.sh /usr/local/nginx/logs/access.log
else
echo "$1 not exsist!"
fi
else
echo "usage: ./hit_rate.sh file_path"
fi
使用方式
$ ./hit_rate.sh /usr/local/nginx/logs/access.log
相关推荐
ngx_cache_purge 是 nginx 模块,此模块可以清理 nginx 的 FastCGI、proxy、 SCGI 和 uWSGI 的缓存。配置指令(相同位置语法)fastcgi_cache_purgesyntax: fastcgi_cache_purge on|off|<method> [from all|<ip> [.....
前言:之前使用官方的nginx proxy_cache作为CDN静态缓存发现该模块清理缓存是一个大问题,只能一条一条url的清除,为此写了一个批量清除缓存的脚本 主要功能包括: 1.按文件类型清理 2.按具体的文件名清理 3.按网站...
2、要利用Nginx的Proxy_cache,你需要在Nginx编译进ngx_cache_purge 模块,执行:nginx -V,查看有没有ngx_cache_purge 字样,没有的话需要自己手动编译。 Nginx搭建CDN手动编译 3、这里以Oneinstack编译ngx_cache...
Nginx 0.8.32版本,proxy_cache和fastcgi_cache已经比较完善,加上第三方的ngx_cache_purge模块(用于清除指定URL的缓存),已经可以完全取代Squid。 在功能上,Nginx已经具备Squid所拥有的Web缓
19.Nginx+keepalived+proxy_cache配置高可用Nginx群集和高速缓冲 20.Nginx最难一战 优化指南 21.确保Nginx安全的10大关键技巧 Nginx变量详解 Nginx模块与实践案例 提供了目前所有互联网公司都在用的51个案例 常见...
第2章 Nginx的模块管理和进程管理 第3章 Nginx如何处理一个请求 第4章 服务器名字 第5章 协助用户操作Nginx的工具 第6章 5XX错误处理 第7章 使用TCMalloc优化Nginx 第8章 PCRE正则表达式 第9章 Nginx高可用的...
第2章 Nginx的模块管理和进程管理 第3章 Nginx如何处理一个请求 第4章 服务器名字 第5章 协助用户操作Nginx的工具 第6章 5XX错误处理 第7章 使用TCMalloc优化Nginx 第8章 PCRE正则表达式 第9章 Nginx高可用的...
第2章 Nginx的模块管理和进程管理 第3章 Nginx如何处理一个请求 第4章 服务器名字 第5章 协助用户操作Nginx的工具 第6章 5XX错误处理 第7章 使用TCMalloc优化Nginx 第8章 PCRE正则表达式 第9章 Nginx高可用的...
06.Nginx提供ProxyCache缓存服务 07.Nginx Rewrite跳转规则与实践 08.Nginx构建Https加密传输网站(基于IOS苹果要求) 09.Nginx构建动态网站架构lnmp&lnmt 10Nginx+Lua-实战代码灰度发布实战-WAF防火墙 11.Nginx性能...
主要介绍了Nginx服务器上搭建图片缓存服务的基本配置解析,分别介绍了通过proxy_store模块和proxy_cache模块两种方式的配置,需要的朋友可以参考下
第9章 Nginx的Web缓存服务与新浪网的开源NCACHE模块 9.1 什么是Web缓存 9.2 Nginx的Web缓存服务 9.3 新浪网开源软件项目——基于Nginx的NCACHE网页缓存系统 第3部分 实战篇 第10章 Nginx在国内知名网站中的应用案例 ...
13、高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式 内容:讲述一种提供双层缓存抗穿透的HTTP服务缓存解决方案。 14、高性能Web服务器Nginx的配置与部署研究(14)...
缓存使用Nginx自带的proxy_cache模块。文件目录说明under construction脚本说明under construction运维文档Nginx编译为了监控流量,我们加入了nginx-module-vts模块,因此需要手动编译Nginx。如果不需要此模块,可以...
第9章 Nginx的Web缓存服务与新浪网的开源NCACHE模块 9.1 什么是Web缓存? 9.2 Nginx的Web缓存服务 9.3 新浪网开源软件项目——基于Nginx的NCache网页缓存系统 第3部分 实战篇 第10章 Nginx在国内知名网站中的...
第9章 Nginx的Web缓存服务与新浪网的开源NCACHE模块 9.1 什么是Web缓存? 9.2 Nginx的Web缓存服务 9.3 新浪网开源软件项目——基于Nginx的NCache网页缓存系统 第3部分 实战篇 第10章 Nginx在国内知名网站中的应用...
ngx_rsplit ngx_rsplit模块 ... proxy_cache_path /tmp/cache keys_zone=mycache:10m inactive=5d max_size=300g; server { listen 80; server_name _; location / { rsplit on; rsplit_frag_size
带有SRCache动态模块 带Memc动态模块 带有PostgreSQL动态模块 带Redis动态模块 带Redis2动态模块 使用Resty DBD Streams to JSON动态模块 带有Echo动态模块 带有前向代理模块 带有Opentracing动态模块和Jaeger插件 ...
upcache-memcached.conf要求nginx> = 1.8,带有这些openresty的模块lua-nginx-module(启用luajit,否则会因缺少ffi软件包而失败) set-misc-nginx-module srcache-nginx-模块memc-nginx-module(如果使用memcached...