设为首页 收藏本站
查看: 2796|回复: 6

[经验分享] 使用varnish来做静态文件缓存加速

[复制链接]

尚未签到

发表于 2012-8-8 08:53:24 | 显示全部楼层 |阅读模式
varnish这几年已经应用比较广泛且成熟了,与squid相比,它具有以下优点:

1、稳定性更好,在处理相同的负载情况下,squid发生故障的概率要高于varnish

2、访问速度更快,因为varnish的数据存储在内存中,而squid是存储在硬盘上。

3、varnish支持并发能力比squid要强,它释放tcp链接要比squid快,所以可以支持更多的链接

4、varnish在管理方面比squid强,他可以通过管理端口使用正则来清理部分缓存,squid是做不到的

5、varnish可以起多个进程,而squid是单cpu单核处理的

varnish的缺点:

1、重启服务后,内存数据清除,需要到后端服务器重新获取数据


安装一些系统需要的包


yum install gcc-c++yum install gccyum install libtoolyum install ncurses-devel #如果这个不装,varnishstat不会安装,这个rhel5的一个bug

下载pcre和varnish


cd /optwget http://repo.varnish-cache.org/source/varnish-3.0.1.tar.gzwget http://downloads.sourceforge.net ... &use_mirror=ncu

安装pcre


unzip pcre-8.30.zipcd pcre-8.30 ./configure --prefix=/usr/local/pcremake && make install

安装varnish


export PKG_CONFIG_PATH=/usr/local/pcre/lib/pkgconfiguseradd  -s /sbin/nologin varnish mkdir -p /data/varnish/cachemkdir -p /data/varnish/logchown -R varnish:varnish /data/varnishtar zxvf varnish-3.0.1.tar.gzcd varnish-3.0.1./configuare --prefix=/usr/local/varnishmake && make install

cp redhat/varnish.initrc /etc/init.d/varnish

cp redhat/varnish.sysconfig /etc/sysconfig/varnish


vim /etc/sysconfig/varnish


NFILES=131072MEMLOCK=182000DAEMON_OPTS="-a 0.0.0.0:80 \  #监听的地址和端口             -T 127.0.0.1:3500 \  #管理地址和端口             -f /usr/local/varnish/etc/vcl.conf\  #加载的配置             -u varnish -g varnish \  #用户和组             -w 10,51200,10 \  #min,max,timeout             -n /data/varnish/cache \             -s file,/data/varnish/cache/varnish_cache.data,4G" #-s 用来定义存储类型和存储容量。Mmap file是使用文件的形式存储,然后再一次性加载到内存中。这种方式如果在访问量很大的情况下,对IO有一定的压力             #-s malloc,2G #这种方式是直接分配内存,不写文件。对IO无压力

chmod 775 /etc/init.d/varnish

vim /usr/local/varnish/etc/vcl.conf


#Cache for linuxtone sites#backend vhostbackend webserver {.host = "192.168.3.30"; #后端server IP.port = "80";}#acl 运行purge缓存的3个IPacl purge {    "localhost";  "127.0.0.1";  "10.13.3.0"/24;}sub vcl_recv {        if (req.http.Accept-Encoding) {            if (req.url ~ "\.(jpg|png|gif|jpeg|flv)$" ) {                remove req.http.Accept-Encoding;                remove req.http.Cookie;            } else if (req.http.Accept-Encoding ~ "gzip") {                set req.http.Accept-Encoding = "gzip";            } else if (req.http.Accept-Encoding ~ "deflate") {                set req.http.Accept-Encoding = "deflate";            } else {                remove req.http.Accept-Encoding;            }        }           if (req.http.host ~ "(.*)taobao.org") {                       set req.backend = webserver;                 }            else {                        error 404 "This website is maintaining or not exist";                }  if (req.request == "PURGE") {     if (!client.ip ~purge) {       error 405 "Not Allowed";   }#.dd.....   return(lookup);  }#...GET...url...jpg,png,gif. ..cookie  if (req.request == "GET"&& req.url ~ "\.(png|gif|jpeg|jpg|ico|swf|css|js|html|htm|gz|tgz|bz2|tbz|mp3|ogg|mp4|flv|f4v|pdf)$") {        unset req.http.cookie;  }#..GET...url.php....cache....  if (req.request =="GET"&&req.url ~ "\.php($|\?)"){        return (pass);  }#     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;        }#   }#........pipe..    if (req.request != "GET" &&      req.request != "HEAD" &&      req.request != "PUT" &&      req.request != "POST" &&      req.request != "TRACE" &&      req.request != "OPTIONS" &&      req.request != "DELETE") {        return (pipe);    }#..GET .HEAD.....    if (req.request != "GET" && req.request != "HEAD") {        return (pass);    }    if (req.http.Authorization) {        return (pass);    }    return (lookup);}#..url+host hash......sub vcl_hash {    hash_data(req.url);    if (req.http.host) {        hash_data(req.http.host);    } else {        hash_data(server.ip);    }    return (hash);}# .....purge .....sub vcl_hit {   if (req.request == "PURGE") {       set obj.ttl = 0s;       error 200 "Purged";    }    return (deliver);}sub vcl_fetch {          if (req.url ~ "\.(jpeg|jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|ico|swf|flv|dmg|js|css|html|htm)$") {                   set beresp.ttl = 2d;                   set beresp.http.expires = beresp.ttl;                   set beresp.http.Cache-Control = "max-age=172800";                   unset beresp.http.set-cookie;          }          if (req.url ~ "\.(dmg|js|css|html|htm)$") {                   set beresp.do_gzip = true;          }          if (beresp.status == 503) {                         set beresp.saintmode = 15s;          }}sub vcl_deliver {        set resp.http.x-hits = obj.hits ;        if (obj.hits > 0) {                set resp.http.X-Cache = "HIT You!";        } else {                set resp.http.X-Cache = "MISS Me!";        }}

/etc/init.d/varnish start #启动varnish

启动成功后,进程中会出现两个varnishd进程。一个master主进程和一个worker工作子进程。master进程读取存储配置命令,进行初始化。子进程则分配线程进行cache工作。

/usr/local/varnish/bin/varnishlog -n /data/varnish/cache

/usr/local/varnish/bin/varnishncsa  -n  /data/varnish/cache

#多次执行该语句,可以测试是否命中缓存

curl -I http://wfstatic.taobao.org/Resources/images/bg_welcome.png

#列出最近被清除的内容

/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 ban.list

#清除指定的文件,后面可以用正则来匹配

/usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 ban.url /resources/mvcres/style/default/form.css

#之前的版本,清除缓存使用的是purge.url


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-797-1-1.html 上篇帖子: 负载均衡的动态文档请求 下篇帖子: varnish 防盗链

尚未签到

发表于 2013-3-13 15:28:34 | 显示全部楼层
有道理。。。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-15 19:17:03 | 显示全部楼层
下雨了,别忘了打伞,湿身是小,淋病就麻烦啦*^_^*

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-17 05:07:04 | 显示全部楼层
生活***好玩,因为生活老***玩我!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-18 11:28:34 | 显示全部楼层
看尽天下A片,心中自然无码~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-19 11:53:23 | 显示全部楼层
人生不能像做菜、把所有的料都准备好才下锅!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-21 01:57:35 | 显示全部楼层
俺从不写措字,但俺写通假字!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表