Varnish详解与实战

yum-yinstallvarnish-3.0.5-1.el6.x86_64.rpmvarnish-docs-3.0.5-1.el6.x86_64.rpmvarnish-libs-3.0.5-1.el6.x86_64.rpmvim/etc/sysconfig/varnish#编辑配置文件,修改如下项VARNISH_LISTEN_PORT=80#varnish监听端口改为80端口VARNISH_STORAGE_SIZE=64M#此值根据自身情况调整,测试环境可调低此值VARNISH_STORAGE=”malloc,${VARNISH_STORAGE_SIZE}”#使用malloc(即内存)作为缓存对象存储方式;servicevarnishstart#启动varnishvarnishadm-S/etc/varnish/secret-T127.0.0.1:6082#登录管理命令行varnish>vcl.list#列出所有的配置varnish>vcl.loadtest1./test.vcl#加载编译新配置,test1是配置名,test.vcl是配置文件varnish>vcl.usetest1#使用配置,需指定配置名,当前使用的配置以最后一次vcl.use为准varnish>vcl.showtest1#显示配置内容,需指定配置名

3、主配置文件分析

vim/etc/varnish/default.vcl#ThisisabasicVCLconfigurationfileforvarnish.Seethevcl(7)#manpagefordetailsonVCLsyntaxandsemantics.##Defaultbackenddefinition.Setthistopointtoyourcontent#server.#importdirectors;#导入directors模块;probebackend_healthcheck{#创建健康监测机制;.url=”/health.html”;.window=5;.threshold=2;.interval=3s;}backendweb1{#创建后端主机;.host=”192.168.1.4″;.port=”80″;.probe=backend_healthcheck;}backendweb2{.host=”192.168.1.5″;.port=”80″;.probe=backend_healthcheck;}backendimg1{.host=”192.168.1.4″;.port=”4040″;.probe=backend_healthcheck;}backendimg2{.host=”192.168.1.5″;.port=”4040″;.probe=backend_healthcheck;}subvcl_init{#创建后端主机组,即directors;newweb_cluster=directors.random();web_cluster.add_backend(web1,1.0);web_cluster.add_backend(web2,1.0);newimg_cluster=directors.random();img_cluster.add_backend(img1,1.0);img_cluster.add_backend(img2,1.0);}aclpurgers{#定义可访问来源IP;”127.0.0.1″;”192.168.0.0″/24;}subvcl_recv{if(req.method==”GET”&&req.http.cookie){#带cookie首部的GET请求也缓存;return(hash);}if(req.url~”test.html”){#test.html文件禁止缓存;return(pass);}if(req.method==”PURGE”){#PURGE请求的处理;if(!client.ip~purgers){return(synth(405,”Methodnotallowed”));}return(hash);}if(req.http.X-Forward-For){#为发往后端主机的请求添加X-Forward-For首部;setreq.http.X-Forward-For=req.http.X-Forward-For+”,”+client.ip;}else{setreq.http.X-Forward-For=client.ip;}if(req.http.host~”(?i)^()?lnmmp.com$”){#根据不同的访问域名,分发至不同的后端主机组;setreq.http.host=”www.lnmmp.com”;setreq.backend_hint=web_cluster.backend();}elsif(req.http.host~”(?i)^images.lnmmp.com$”){setreq.backend_hint=img_cluster.backend();}return(hash);}subvcl_hit{if(req.method==”PURGE”){#PURGE请求的处理;purge;return(synth(200,”Purged”));}}subvcl_miss{if(req.method==”PURGE”){#PURGE请求的处理;purge;return(synth(404,”Notincache”));}}subvcl_pass{if(req.method==”PURGE”){#PURGE请求的处理;return(synth(502,”PURGEonapassedobject”));}}subvcl_backend_response{#自定义缓存文件的缓存时长,即TTL值;if(bereq.url~”\.(jpg|jpeg|gif|png)$”){setberesp.ttl=7200s;}if(bereq.url~”\.(html|css|js)$”){setberesp.ttl=1200s;}if(beresp.http.Set-Cookie){#定义带Set-Cookie首部的后端响应不缓存,,直接返回给客户端;return(deliver);}}subvcl_deliver{if(obj.hits>0){#为响应添加X-Cache首部,显示缓存是否命中;setresp.http.X-Cache=”HITfrom”+server.ip;}else{setresp.http.X-Cache=”MISS”;}}

4、测试结果:

本文出自 “gentoo” 博客,请务必保留此出处

世上并没有用来鼓励工作努力的赏赐,所有的赏赐都只是被用来奖励工作成果的。

Varnish详解与实战

相关文章:

你感兴趣的文章:

标签云: