varnish安裝與簡單配置

1.安裝
yum -y install pcre-devel ncurses-devel
useradd -s /sbin/nologin varnish
mkdir /data/varnish/cache
mkdir /data/varnish/log
chown -R varnish:varnish /data/varnish/cache
chown -R varnish:varnish /data/varnish/log
tar zxvf varnish-3.0.3.tar.gz -C /usr/src/
cd /usr/src/varnish-3.0.3/
sh autogen.sh
sh configure
make check
make install
cp redhat/varnish.sysconfig /etc/sysconfig/varnish
cp redhat/varnish.initrc /etc/init.d/varnish
cp redhat/varnish_reload_vcl /usr/local/sbin/
2.編輯
cd  /usr/local/etc/varnish/
vi default.vcl
 backend default {
     .host = "192.168.10.2";
     .port = "80";
 }
 
 acl purge {
     "localhost";
     "127.0.0.1";
     "192.168.10.1";
 }
 sub vcl_recv {
     if (req.request == "PURGE") {
 if (!client.ip ~ purge) {
 error 405 "not allowed.";
 }
# return (lookup);
     }
     if (req.restarts == 0) {
  if (req.http.x-forwarded-for) {
      set req.http.X-Forwarded-For =
   req.http.X-Forwarded-For + ", " + client.ip;
  } else {
      set req.http.X-Forwarded-For = client.ip;
  }
     }
     if (req.request != "GET" &&
       req.request != "HEAD" &&
       req.request != "PUT" &&
       req.request != "POST" &&
       req.request != "TRACE" &&
       req.request != "OPTIONS" &&
       req.request != "DELETE") {
         return (pipe);
     }
     if (req.request != "GET" && req.request != "HEAD") {
         return (pass);
     }
     if (req.http.Authorization || req.http.Cookie) {
         return (pass);
     }
     if (req.http.host ~ "^(.*).kangweiqi.com") {
         set req.backend = default;
     }
     return (lookup);
 }
 sub vcl_pipe {
     return (pipe);
 }
 sub vcl_pass {
     return (pass);
 }
 sub vcl_hash {
     hash_data(req.url);
     if (req.http.host) {
         hash_data(req.http.host);
     } else {
         hash_data(server.ip);
     }
     return (hash);
 }
 sub vcl_hit {
     if (req.request == "PURGE") {
 set obj.ttl = 0s;
 error 200 "Purged.";
     }
#     if (!obj.cacheable) {
# return (pass);
#     }
#     if (obj.http.Vary) {
# unset obj.http.Vary;
#     }
     return (deliver);
 }
 sub vcl_miss {
     if (req.request == "PURGE") {
 error 404 "not in cache.";
     }
     return (fetch);
 }
 sub vcl_fetch {
     if (beresp.ttl <= 0s ||
         beresp.http.Set-Cookie ||
         beresp.http.Vary == "*") {
   set beresp.ttl = 120 s;
   return (hit_for_pass);
     }
     if (req.request == "GET" && req.url ~ "\.(png|xsl|xml|bmp|jpeg|ico|swf|txt|png|jpg|gif|css|js|html|htm)$") {
         set beresp.ttl =600s;
     }
     return (deliver);
 }
 sub vcl_deliver {
     if (obj.hits > 0) {
 set resp.http.X-Cache = "hit from
www.kangweiqi.com";
     } else {
 set resp.http.X-Cache = "miss from
www.kangweiqi.com";
     }
     return (deliver);
 }
 sub vcl_error {
     set obj.http.Content-Type = "text/html; charset=utf-8";
     set obj.http.Retry-After = "5";
     synthetic {"
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html>
   <head>
     <title>"} + obj.status + " " + obj.response + {"</title>
   </head>
   <body>
     <h1>Error "} + obj.status + " " + obj.response + {"</h1>
     <p>"} + obj.response + {"</p>
     <h3>Guru Meditation:</h3>
     <p>XID: "} + req.xid + {"</p>
     <hr>
     <p>Varnish cache server</p>
   </body>
 </html>
 "};
     return (deliver);
 }
 sub vcl_init {
  return (ok);
 }
 sub vcl_fini {
  return (ok);
 }
vi /etc/sysconfig/varnish   #修改以下幾處
VARNISH_VCL_CONF=/usr/local/etc/varnish/default.vcl
VARNISH_LISTEN_ADDRESS=192.168.10.1
VARNISH_LISTEN_PORT=80
VARNISH_STORAGE_FILE=/data/varnish/cache/varnish_cache.data
VARNISH_STORAGE_SIZE=512M
#VARNISH_SECRET_FILE=/usr/local/etc/varnish/secret   #這一行註釋掉,下面的-S  ${VARNISH_SCRET_FILE}這行參數也要刪掉
vi /etc/init.d/varnish   #修改以下幾處
exec="/usr/local/sbin/varnishd"
reload_exec="/usr/local/sbin/varnish_reload_vcl"
prog="varnishd"
config="/etc/sysconfig/varnish"
lockfile="/var/lock/subsys/varnish"
vi /usr/local/sbin/varnish_reload_vcl    #修改以下幾處
#elif [ -z "$VARNISH_SECRET_FILE" ]; then
# echo "Warning: VARNISH_SECRET_FILE is not set"
# secret=""
#elif [ ! -s "$VARNISH_SECRET_FILE" ]; then
# echo "Error: varnish secret file $VARNISH_SECRET_FILE is unreadable or empty"
# exit 2
#else
# secret="-S $VARNISH_SECRET_FILE"    #註釋掉上面這幾行
VARNISHADM="/usr/local/sbin/varnishadm $secret -T  $VARNISH_ADMIN_LISTEN_ADDRESS:$VARNISH_ADMIN_LISTEN_PORT"   #這一行修改varnishadm路徑
3.啓動
/etc/init.d/varnish start
4.查看緩存效果
/usr/local/bin/varnishstat -n /usr/local/var/varnish/www.kangweiqi.com
5.清除緩存
telnet 127.0.0.1 6082
ban.url /2.2.html
quit
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章