首页 > 代码库 > nginx cache 使用 【转】

nginx cache 使用 【转】


1.编译安装
安装cache_purge模块,可以参考我写的:http://bbs.linuxtone.org/thread-6875-1-1.html
nginx的server配置:

  1. server
  2.        {
  3.                listen       80;
  4.                server_name 54yancheng.com www.54yancheng.com;
  5.                #purge cache files
  6.                location ~ /purge(/.*)
  7.                {
  8.                #设置只允许指定的IP或IP段才可以清除URL缓存,加入你的squid服务器的ip地址。
  9.                allow            114.244.0.0/16;
  10.                allow            192.168.0.0/16;
  11.                deny            all;
  12.                proxy_cache_purge    cache_one   $host$1$is_args$args;
  13.                error_page 405 =200 /purge$1; #处理squidclient purge的时候出现的405错误
  14.                }
  15.                #用if判断$request_method是PURGE时,转到/purge/这个location里去处理
  16.                if ( $request_method = "PURGE" ) {
  17.                   rewrite ^(.*)$ /purge$1 last;
  18.                }
  19.                #pass files
  20.                location /
  21.                {
  22.                         proxy_set_header Host  $host;
  23.                         proxy_set_header X-Forwarded-For  $remote_addr;
  24.                         proxy_pass http://54yancheng;
  25.                }
  26.                #cache files
  27.                location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
  28.                {
  29.                         add_header      X-Cache   HIT_from_www.54yancheng.com;
  30.                         proxy_cache cache_one;
  31.                
  32.                         proxy_cache_valid  200 304 12h;
  33.                         proxy_cache_valid  301 302 1m;
  34.                         proxy_cache_valid  any 1m;
  35.                
  36.                         proxy_cache_key $host$uri$is_args$args;
  37.                         proxy_set_header Host  $host;
  38.                         proxy_set_header X-Forwarded-For  $remote_addr;
  39.                         proxy_pass http://54yancheng;
  40.                         expires      365d;
  41.                         access_log off;
  42.                }
  43.                #web log
  44.                #access_log off;
  45.                access_log /data/logs/access_www.54yancheng.com.log  combined;
  46.        }
复制代码


2.squidclient清除示例:

  1. # squidclient -h 192.168.0.111 -p 80 -m PURGE -v http://www.54yancheng.com/ads/6739984.gif
  2. headers: ‘PURGE http://www.54yancheng.com/ads/6739984.gif HTTP/1.0
  3. Accept: */*
  4. HTTP/1.1 200 OK
  5. Server: Nginx
  6. Date: Mon, 13 Sep 2010 03:05:02 GMT
  7. Content-Type: text/html
  8. Content-Length: 290
  9. Connection: close
  10. <html>
  11. <head><title>Successful purge</title></head>
  12. <body bgcolor="white">
  13. <center><h1>Successful purge</h1>
  14. <br>Key : www.54yancheng.com/ads/6739984.gif
  15. <br>Path: /data/cache/nginx_cache/3/6d/e70fbe8e578b27440e8f2e60269966d3
  16. </center>
  17. <hr><center>Apache</center>
  18. </body>
  19. </html>
复制代码


3.脚本清查多台同配置的nginx cache,并输出状态
在实际生产中,业务用多台nginx的cache做集群实现负载均衡,这个脚本就是实现清除多nginx服务器cahce的功能。

  1. #!/bin/sh
  2. #利用squidclient的PURGE清除多nginx服务器cache脚本
  3. #bbs:www.linuxtone.org
  4. #by:hamgua
  5. echo "nginx purge $1"
  6. echo "----------------------------"
  7. for i in {1..3};do
  8.         echo "host:192.168.0.$i"
  9.         echo "status:`/usr/local/squid2/bin/squidclient -h 192.168.0.$i -p 80 -m PURGE -v $1 2>&1 |grep "^<center>"|awk -F‘[><]‘ ‘{print $5}‘`"
  10.         echo "----------------------------"
  11. done
复制代码

脚本使用示例:

  1. # ./purge.sh http://www.54yancheng.com/ads/6739984.gif
复制代码
  1. nginx purge http://www.54yancheng.com/ads/6739984.gif
  2. ----------------------------
  3. host:192.168.0.1
  4. status:Successful purge
  5. ----------------------------
  6. host:192.168.0.2
  7. status:404 Not Found
  8. ----------------------------
  9. host:192.168.0.3
  10. status:404 Not Found
  11. ----------------------------
复制代码



参考文章:
安装配置参考我写的:http://bbs.linuxtone.org/thread-6875-1-1.html
squidclient清除nginx cache,参考sudone的文章:http://sudone.com/nginx/nginx_cache_purge.html
linuxtone网站服务器nginx版块:http://bbs.linuxtone.org/forumdisplay.php?fid=22&filter=type&typeid=1
张宴 使用Nginx的proxy_cache缓存功能取代Squid[原创] http://blog.s135.com/nginx_cache/

nginx cache 使用 【转】