Varnish配置笔记记录

浏览:
字体:
发布时间:2013-12-09 23:23:21
来源:
Varnish是一个开源的反向代理软件和HTTP加速器,与传统的Squid相比,Varnish具有性能更高、速度更快、管理更方便等诸多优点,很多大型的运营网站都开始尝试用Varnish来替换Squid,这些都促使Varnish迅速发展起来。

1、准备工作及下载源码包

 

yum install -y automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfigwget http://repo.varnish-cache.org/source/varnish-3.0.3.tar.gz
 2、安装
 

tar zxf varnish-3.0.3.tar.gzcd varnish-3.0.3./autogen.sh./configure --prefix=/usr/local/varnishmake && make install


3、添加Varnishd进程用户www,用户组www,创建/var/vcache目录,使www用户有权限可读写

 

 
groupadd wwwuseradd www -g wwwmkdir /home/vcachechown -R www:www /home/vcachechmod -R 750 /home/vcache

 

4、编辑/etc/sysctl.conf 优化几个内核参数

 

net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_keepalive_time = 300net.ipv4.tcp_syncookies = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1net.ipv4.ip_local_port_range = 5000    65000
 

运行sysctl -p 重新按配置文件设置内核参数

5、启动Varnishd

 
/usr/local/varnish/sbin/varnishd -u www -g www -f /usr/local/varnish/etc/varnish/varnish.conf -a 0.0.0.0:80 -s file,/home/vcache/varnish_cache.data,100M -w 1024,8192,10 -t 3600 -T 127.0.0.1:3500


参数说明:

-u 以什么用运行
-g 以什么组运行
-f varnish配置文件
-a 绑定IP和端口
-s varnish缓存文件位置与大小
-w 最小,最大线程和超时时间
-T varnish管理端口,主要用来清除缓存
-p client_http11=on 支持http1.1协议
-P(大P) /usr/local/varnish/var/varnish.pid 指定其进程码文件的位置,实现管理

6、启动varnishncsa用来将Varnish访问日志写入日志文件:

 /usr/local/varnish/bin/varnishncsa -n /home/vcache -w /var/log/varnish.log &

7、Varnish 缓存清除

 /usr/local/varnish/bin/varnishadm -T 192.168.1.180:3500 purge "req.http.host ~ www.5013.org$ && req.url ~ /static/image/tp.php"

说明:

192.168.1.180:3000 为被清除缓存服务器地址
www.5013.org 为被清除的域名
/static/image/tp.php 为被清除的url地址列表

清除所有缓存
/usr/local/varnish/bin/varnishadm -T 192.168.1.180:3500 url.purge *$

清除image目录下所有缓存
/usr/local/varnish/bin/varnishadm -T 192.168.1.180:3500 url.purge /image/

8、将加入启动项
vi /etc/rc.local


ulimit -SHn 51200/usr/local/varnish/sbin/varnishd -u www -g www -f /usr/local/varnish/etc/varnish/varnish.conf -a 0.0.0.0:80 -s file,/home/vcache/varnish_cache.data,100M -w 1024,8192,10 -t 3600 -T 127.0.0.1:3500/usr/local/varnish/bin/varnishncsa -n /home/vcache -w /var/log/varnish.log &
 

9、杀掉varnishd进程
pkill varnishd

10、查看varnishd命中率

 /usr/local/varnish/bin/varnishstat



 

11、更新系统时间


yum install -y ntpntpdate time.nist.govecho "00 01 * * * ntpdate time.nist.gov" >> /etc/crontab
 

附件多主机多域名varnish.conf 配置


backend blog {	.host = "198.56.193.190";	.port = "80";}backend  www {	.host = "192.168.1.170";	.port = "80";}sub vcl_recv { 	if (req.http.host ~ "^(www.)?5013.org$") {  set req.backend = blog; 	} elsif (req.http.host ~ "^(www.)?(test1.com|test2.com)$") {   set req.backend = www; 	} else {   error 404 "Unknown virtual host"; 	} }sub vcl_recv {     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") {         /* Non-RFC2616 or CONNECT which is weird. */         return (pipe);     }     #只有GET与HEAD方法才会使用Lookup,使用缓存。     if (req.request != "GET" && req.request != "HEAD") {         /* We only deal with GET and HEAD by default */         return (pass);     }    # if (req.http.Authorization || req.http.Cookie) {    #     /* Not cacheable by default */    #     return (pass);    # }      #如果请求的是php页面直接转发到后端服务器     if (req.url ~ "/.(php|cgi)($|/?)") {          return (pass);     }     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 {     return (deliver); } sub vcl_miss {     return (fetch); } sub vcl_fetch {     if (beresp.ttl <= 0s ||         beresp.http.Set-Cookie ||         beresp.http.Vary == "*") {                /*                 * Mark as "Hit-For-Pass" for the next 2 minutes                 */                set beresp.ttl = 120 s;                return (hit_for_pass);     }     if (req.url ~ "/.(png|gif|jpg)$") {         unset beresp.http.set-cookie;         set beresp.ttl = 1h;     }     #设置图片的缓存TTL为一小时         return (deliver); } sub vcl_deliver {     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);}


>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2023 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();