varnish cache 反向代理服务器和http加速器的安装和配置
一,什么是varnish Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好。
二,安装varnish http://sourceforge.net/projects/varnish/files/ 三,varnish的配置文件 vi /usr/local/varnish/vcl.conf 输入以下内容 backend testserver { set backend.host = "127.0.0.1"; set backend.port = "10000"; } backend imageserver { set backend.host = "127.0.0.1"; set backend.port = "10001"; } acl purge { "localhost"; "127.0.0.1"; "192.168.1.0"/24; } sub vcl_recv { if (req.request == "PURGE") { if (!client.ip ~ purge) { error 405 "Not allowed."; } lookup; } if (req.http.host ~ "^localhost") { set req.backend = testserver; } elseif (req.http.host ~ "^127.0.0.1") { set req.backend = imageserver; } else{ error 404 "test Cache Server"; } if (req.request != "GET" && req.request != "HEAD") { pipe; } if (req.http.Expect) { pipe; } if (req.http.Authenticate || req.http.Cookie || req.url ~ ".(php|cgi)($|?)") { pass; } if (req.request == "GET" && req.url ~ ".(txt|js|jpg|gif|png|bmp|css)$") { lookup; } lookup; } sub vcl_hit { if (req.request == "PURGE") { set obj.ttl = 0s; error 200 "Purged."; } } sub vcl_miss { if (req.request == "PURGE") { error 404 "Not in cache."; } } sub vcl_fetch { if (obj.http.Pragma ~ "no-cache" || obj.http.Cache-Control ~ "no-cache" || obj.http.Cache-Control ~ "private") { pass; } if (req.request == "GET" && req.url ~ ".(txt|js|jpg|gif|png|bmp|css)$") { set obj.ttl = 3600s; } else { set obj.ttl = 30d; } } sub vcl_hash { set req.hash += req.url; if (req.http.host) { set req.hash += req.http.host; }else{ set req.hash += server.ip; } hash; } sub vcl_pipe { pipe; } sub vcl_pass { pass; } 简单说明一下: 1,设置反向请求的IP,127.0.0.1:10000和127.0.0.1:10001 2,允许缓存管理,localhost,127.0.0.1,192.168.0.* 3,varnish对匹配localhost请求跳到testserver,对匹配127.0.0.1的请求跳 到imageserver,如果都没有,显示test Cache Server 4,Varnish对HTTP协议中的GET、HEAD请求进行缓存,对POST请求透过,让其直接访问后端Web服务器。放过php,cgi不对其进行缓存,只缓存,静态文件 5,对以.txt.js.jpg.gif.png.bmp.css结尾的URL缓存时间设置1小时,对其他的URL缓存时间设置为30天。 四,优化Linux内核参数 vi /etc/sysctl.conf 加入 net.ipv4.tcp_fin_timeout = 30 ldconfig进行重新加载 五,启动varnish和varnishncsa,并查看 ulimit -SHn 51200 解释一下8080是varnish监听的端口,例如127.0.0.1:8080会反向请求127.0.0.1:10001图片服务器,127.0.0.1:3500这个是管理缓存的ip [zhangy@BlackGhost ~]$ ps -e|grep varnish 六、通过Varnish管理端口,使用正则表达式批量清除缓存: 1,例:清除类似http://127.0.0.1:8080/00/01的URL地址: [root@BlackGhost varnish]# /usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge /00/ 2,例:清除类似http://127.0.0.1:8080/00/0144的URL地址: [root@BlackGhost varnish]# /usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge d*$ 3,例:清除类似http://127.0.0.1:8080/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif的url地址 [root@BlackGhost varnish]# /usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge gif$ 4,清除所有 [root@BlackGhost varnish]# /usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge *$ 5,怎么测试你知道有没有清除缓存 在地址栏输入http://127.0.0.1:8080/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif 清缓存前 说明:请求了8次,后台请求1次,缓存7次 清除缓存 然后在请求http://127.0.0.1:8080/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif 你会发现以下内容 缓存清后 说明:请求数变了,缓存数没变,后台请求数变了,说明刚才请缓存是有效果的。 七,进行缓存测试,以及部分参数说明 varnish 上图中199719表示用户请求数; 上图中199704表示用户请求收到数 上图中199688表示这个缓存命中次数,就是缓了多少次 上图中第一个2表示没有缓存数,第一次访问都不会被缓存的,memcache也是 上图中第二个2表示后台处理数,没缓存当然要交到后台处理 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 为 docker 中的 nginx 配置 https
- ng2-dragula [dragula](angular2拖放) – * ngFor与[dragul
- angular – “ActivatedRoute”类型中不存在属性“导航”
- 如何在vimscript中检测vim命令行参数?
- 由通过WebService上传附件给SharePoint的List时文件不能太大
- authentication unavailable: no polkit agent available t
- 基于并发设计的Agent/Actor的设计模式
- twitter-bootstrap – 无法获取Bootstrap Carousel基本示例
- Nginx日志切割
- 如果默认CMD是Shell脚本,则Docker停止退出代码-1