linux nginx缓存清理缓存,linux + nginx + ngx_cache_purge 缓存清理

安装nginx ,考虑 要 会话保持,后端服务器检查, 以及高速缓存,从网上下载如下安装包: (没有使用wget)

pcre-8.38.zip  (nginx依赖库 http://sourceforge.net/projects/pcre/files/pcre/)

nginx-1.8.1.tar.gz  (nginx安装包  http://nginx.org/en/download.html)

1.  安装pcre

[root@localhost nginx]# cd /app/nginx

[root@localhost nginx]# unzip pcre-8.38.zip

[root@localhost nginx]#chmod -R 777pcre-8.38

[root@localhost nginx]#cdpcre-8.38

[root@localhost pcre-8.38]# ./configure

[root@localhost pcre-8.38]# make

[root@localhost pcre-8.38]# make install

2.  安装nginx,带nginx-sticky-module, ngx_cache_purge, nginx_upstream_check_module

[root@localhost nginx]# cd /app/nginx

[root@localhost nginx]# tar -zxvfnginx-1.8.1.tar.gz

[root@localhost nginx]# tar -zxvfnginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz

[root@localhost nginx]# mv nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0dnginx-sticky

[root@localhost nginx]# tar -zxvfngx_cache_purge-2.3.tar.gz

[root@localhost nginx]# unzipnginx_upstream_check_module-master.zip

[root@localhost nginx]# cd nginx-1.8.1

[root@localhost nginx-1.8.1]# patch -p1< ../nginx_upstream_check_module-master/check_1.7.5+.patch  (注意这里的版本号,不能搞错)

[[email protected]]#./configure --with-http_stub_status_module --with-http_realip_module--add-module=/app/nginx/nginx-sticky/ --add-module=/app/nginx/nginx_upstream_check_module-master/--add-module=/app/nginx/ngx_cache_purge-2.3/

[[email protected]]#make  (编译)

[root@localhost nginx-1.8.1]#make install  (安装)

配置文件中nginx.conf这里主要提一下 缓存清理的配置,因为本次在这里浪费了太多的时间:

截取nginx.conf 中关于缓存的配置>>>>>>>>>>>>

http {

...........

proxy_temp_path   /usr/local/nginx/proxy_temp;

#levels设置目录层次

#keys_zone设置缓存名字和共享内存大小

#inactive在指定时间内没人访问则被删除在这里是1天

#max_size最大缓存空间*/

proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=2g;

server {

........

#清理缓存 ngx_cache_purge模块, 注意purge配置一定要放在静态缓存配置的前面

location ~ /purge(/.*)

{

allow all;

#deny all;

#这里千万要注间配置成 $host$1$is_args$args 才能正确清理到缓存

proxy_cache_purge cache_one $host$1$is_args$args;

}

#所有静态文件由nginx直接读取不经过后端

location ~ .*\.(html|gif|jpg|jpeg|png|bmp|swf|mp3|wma|js)?$

{

proxy_cache cache_one;

proxy_cache_key $host$uri$is_args$args;

#记录缓存命中状态

add_header Nginx-Cache $upstream_cache_status;

proxy_cache_valid  200 304 301 302 1h;

proxy_cache_valid 404 1m;

proxy_cache_valid any 1d;

expires 1d;

}

............

}

}

注意加红加粗的字,如果将$host$1$is_args$args 改成 $host$uri$is_args$args, 清理缓存时会报404找不到。

其实在网上早就有例子,但就是没仔细看清楚   https://github.com/FRiCKLE/ngx_cache_purge

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

注意事项

1、nginx.conf文件中,设置主机

proxy_set_header Host $host:$server_port;

后面的:$server_port省略时会自动指向80端口,对于非80端口的会出现问题。

2、设置 proxy_cache  缓存后,存在部分图片和css样式无法正常显示的问题,按下面链接文章中的说法,可能是设置了sendfile on导致的。暂时未验证。

http://xiaorui.cc/2015/06/24/%E6%89%AF%E6%B7%A1nginx%E7%9A%84sendfile%E9%9B%B6%E6%8B%B7%E8%B4%9D%E7%9A%84%E6%A6%82%E5%BF%B5/

你可能感兴趣的:(linux,nginx缓存清理缓存)