网上有人做过测试:
一种情况是使用nginx的proxy_cache来做缓存,经测试,性能最佳;第二种是使用nginx来做动静分离,经测试,性能次于第一种,第三种是使用nginx的proxy_cache来做缓存,同时在nginx的前端使用keepalived来实现nginx的failover切换,即HA。
测试参考:http://quenlang.blog.51cto.com/4813803/1570671
现自己做一下代理缓存配置,做个记录,主要配置如下:
#proxy_cache start
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_temp_path /tmp/temp_dir;
#设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为300M。
proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=300M;
#proxy_cache end
upstream backend {
server 10.10.49.23:8080 max_fails=1 fail_timeout=10s;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
#proxy_cache start
add_header X-Cache $upstream_cache_status;
#动静分类,如果有CDN,可以把静的proxy_pass指向CDN服务器
location ~* "\.(jpg|jpeg|png|gif|html|css|js)$" {
proxy_pass http://backend;
proxy_redirect off;
proxy_set_header Host $host;
proxy_cache cache_one;
proxy_cache_valid 200 302 1h;
proxy_cache_valid 301 1d;
proxy_cache_valid any 1d;
expires 1d;
}
location ~* "\.(jsp|do)$" {
proxy_pass http://backend;
}
测试是否成功,可通过chrom访问:
有X-Cache:HIT
查看缓存目录会生成:
说明成功了。
接下来安装purge
下载:
wget http://labs.frickle.com/files/ngx_cache_purge-2.0.tar.gz
tar zxvf ngx_cache_purge-2.0.tar.gz
先停nginx
重新编译:
./configure --add-module=/usr/local/src/ngx_cache_purge-2.0
make && make install
发现有错,报ngx_cache_purge_module.c:275: error: comparison between pointer and integer之类的错,网上查了一下是nginx与purge不兼容问题
于是下载了ngx_cache_purge-2.3.tar.gz就没问题了。
可是不知道为什么清除缓存总报404,网上说的三个理由,主要是说location位置顺序不对,可调整后还是一样,现在还没有解决。