nginx cache 使用 【轉】

來源:互聯網
上載者:User

標籤:blog   http   io   color   ar   os   使用   sp   for   


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 使用 【轉】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.