首页 > nginx > nginx的proxy_cache缓存取替Squid

nginx的proxy_cache缓存取替Squid

2010年4月14日 eric 发表评论 阅读评论

早就看到nginx wiki 有提到 proxy_cache,由于一直没有看到大家对他报有身好评,所以一直也没有做测试,今天闲下来,开了两个虚拟机测试了一下,效果不错,后期准备实战一下。

Nginx proxy_cache 缓存是把URL及相关组合当作Key,用md5编码哈希后保存在硬盘上,所以它可以支持任意URL链接,同时也支持404/301/302这样的非 200状态码。虽然目前官方的Nginx Web缓存服务只能为指定URL或状态码设置过期时间,不支持类似Squid的PURGE指令,手动清除指定缓存页面,但是,通过一个第三方的Nginx 模块,可以清除指定URL的缓存。

测试环境:

www.nginxs.com    nginx-proxy_cache

192.168.6.188    nginx

1.下载编译安装 nginx

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.02.tar.bz2

tar jxvf pcre-8.02.tar.bz2

cd pcre-8.02

./configure --prefix=/usr --enable-utf8 --enable-pcregrep-libbz2 --enable-pcregrep-libz

make

make install

wget http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz

tar zxvf ngx_cache_purge-1.0.tar.gz

wget http://www.nginx.org/download/nginx-0.8.35.tar.gz

tar zxvf nginx-0.8.35.tar.gz

cd nginx-0.8.35

./configure --prefix=/usr/local/nginx --with-pcre --user=www --group=www --with-file-aio --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-cc-opt=" -O3" --add-module=../ngx_cache_purge-1.0

make

make install

2.配置cache 服务的 配制文件 /usr/local/nginx/conf/nginx.conf 配制文件内容:

vim /usr/local/nginx/conf/nginx.conf

user  www www;

worker_processes  1;

error_log  logs/error.log  notice;

pid        logs/nginx.pid;

events {

worker_connections  1024;

}

http {

include       mime.types;

default_type  application/octet-stream;

sendfile        on;

tcp_nopush     on;

keepalive_timeout  65;

gzip  on;

# 设置web缓存区名称为 nginx,内存缓存空间大小为10M,5分钟没有被访问的内容自动清楚,最大缓存对象为200K。

proxy_cache_path /var/www/cache levels=1:2 keys_zone=nginx:10m inactive=5m max_size=200k;

server {

listen       80;

server_name  localhost;

index   index.html index.htm;

root    /var/www;

location / {

#对应上面的 keys_zone名字

proxy_cache nginx;

#针对 200 302 页面缓存1小时

proxy_cache_valid 200 302 1h;

#以域名、uri、参数组合成 web缓存的key值,nginx根据key值hash,存储缓存内容到目录内。

proxy_cache_key $host$uri$is_args$args;

# 针对 301代码页面缓存一天

proxy_cache_valid 301 1d;

proxy_cache_valid any 1m;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_pass  http://192.168.6.188;

expires     1d;

}

# ngx_cache_purge 模块,用于清除缓存。

location ~ /purge(/.*)

{

proxy_cache_purge nginx $host$1$is_args$args;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

}

}

}

3.启动nginx

/usr/local/nginx/sbin/nginx

4.测试

在192.168.6.188 的 web 根目录执行

wget www.nginxs.com

然后访问 http://www.nginxs.com

5.清除制定的url 缓存

假设一个URL 主页http://www.nginxs.com/,通过访问http://www.nginxs.com/purge/就可以清除该URL的缓存。

如果清除 URL http://www.nginxs.com/html/nginx.html 就要通过访问 http://www.nginxs.com/purge/html/nginx.html

转载请注明:文章转载自:Eric's linux and nginx! (http://www.nginxs.com)
本文地址:http://www.nginxs.com/linux/119.html

分类: nginx 标签: , , ,
  1. 2010年4月15日20:36 | #1

    我是完全看不懂,只能够飘过。

您必须在 登录 后才能发布评论.