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
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
-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访问日志写入日志文件:
7、Varnish 缓存清除
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);}
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 12-05亚马逊推出新一代基础模型 任意模态生成大模
- 12-05OpenAI拓展欧洲业务 将在苏黎世设立办公室
- 12-05微软质疑美国联邦贸易委员会泄露信息 督促其
- 12-05联交所取消宝宝树上市地位 宝宝树:不会对公
- 12-04企业微信致歉:文档打开异常已完成修复