为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
相关推荐
2. 进入解压后的目录,编译并添加到Nginx的模块列表中。这可能涉及运行`./configure --add-module=path/to/ngx_cache_purge`,然后进行`make`和`make install`。 3. 更新Nginx的配置文件,启用Cache Purge功能。在...
ngx_cache_purge 是 nginx 模块,此模块可以清理 nginx 的 FastCGI、proxy、 SCGI 和 uWSGI 的缓存。配置指令(相同位置语法)fastcgi_cache_purgesyntax: fastcgi_cache_purge on|off|<method> [from all|<ip> [.....
“nginx系列(十)nginx缓存代理proxy_cache和CDN实现的原理”这个标题揭示了本文将探讨的主题,主要集中在两个关键点上:一是Nginx的缓存代理机制proxy_cache,二是如何利用Nginx实现内容分发网络(CDN)的功能。...
然后,进入解压后的目录,编译 Nginx 并添加 ngx_cache_purge 模块: ```bash cd nginx-1.0.12 ./configure --with-http_stub_status_module --with-http_ssl_module --add-module=../ngx_cache_purge-1.5 make ...
同时,为了提高响应速度,可以结合使用缓存策略,如使用Nginx的`proxy_cache`或`memcached`等缓存解决方案。 6. **总结** `http_image_filter_module`为Nginx带来了强大的图像处理能力,使得Web服务器不仅可以提供...
以上仅是Nginx配置的冰山一角,实际应用中还可以结合正则表达式、if条件语句、自定义模块等实现更多高级功能。理解并熟练掌握这些基本配置,能够帮助运维人员更好地管理和优化Nginx服务器,提升网站性能和稳定性。
前言:之前使用官方的nginx proxy_cache作为CDN静态缓存发现该模块清理缓存是一个大问题,只能一条一条url的清除,为此写了一个批量清除缓存的脚本 主要功能包括: 1.按文件类型清理 2.按具体的文件名清理 3.按网站...
3. 将ngx_cache_purge模块的源码添加到Nginx的编译选项中,使用`--add-module=path/to/ngx_cache_purge`参数。 4. 完成编译和安装过程,更新Nginx配置文件,引入ngx_cache_purge模块的相关配置。 5. 在Nginx配置中...
3. 缓存更新:Nginx提供了多种机制来控制缓存的更新,如`proxy_cache_revalidate`(根据Last-Modified或ETag头验证缓存)、`proxy_cache_bypass`(决定是否跳过缓存)和`proxy_cache_lock`(防止同一资源的并发请求...
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m; proxy_temp_path /var/lib/nginx/tmp/proxy; server { listen 8080; server_name proxy.example.com; location / { ...
尽管proxy_cache作为Nginx的一个模块,在处理磁盘IO方面可能不如专业的缓存软件,但Nginx的高并发处理能力仍为其带来了性能优势。 Squid在此次测试中的综合表现最佳,尤其在磁盘IO处理方面表现突出。这一点可能是...
在以上配置中,我们利用了`proxy_set_header`指令传递客户端的cookie信息,并通过`proxy_cache`模块将session信息存储在Memcached集群中,确保在所有服务器之间共享。 总结来说,这个【nginx集群配置-测试通过】的...
Nginx 静态缓存基本配置可以通过 proxy_cache 配置实现。例如: ``` http { ... proxy_cache my_cache; ... server { ... location / { proxy_pass http://backend; proxy_cache my_cache; proxy_cache_...
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m inactive=60m; server { location / { proxy_pass http://backend; proxy_cache my_cache; proxy_cache_bypass $http_pragma; proxy...
ngx_upload模块是Nginx的一个扩展模块,专门用于处理HTTP请求中的文件上传功能。... - 配置Nginx,添加ngx_upload_module和ngx_cache_purge模块,执行`./configure --prefix=/usr/local/nginx --with-pcre --with-...
本文将详细解析两种Nginx的图片缓存配置方式:proxy_store模块和proxy_cache模块。 首先,proxy_store模块允许Nginx将从上游服务器获取的图片保存到本地磁盘,形成一个本地的静态文件缓存。以下是一个基本的proxy_...
1. **安装与配置**:首先,你需要在你的系统上安装Nginx和必要的构建工具,然后解压ngx_cache_purge-1.3.tar.gz,将源代码添加到Nginx的模块目录。接着,在Nginx的配置文件中引入这个模块,并进行适当配置,如设置...
启用Nginx的缓存功能,需要配置 `proxy_cache_path` 和 `proxy_cache`。以下是一个简单的配置示例: ```nginx proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m; ...