Varnish简单配置
来源:互联网 发布:长板空间 淘宝 编辑:程序博客网 时间:2024/05/16 09:03
varnish反向代理的简单配置,可用看http://linuxguest.blog.51cto.com/195664/354889/这篇博文来对varnish有一个初步的了解。
varnish的流程图还是很重要的,可以说是varnish的整体结构。如下图:
目测csdn的博客比sina的牛很多的so
发现一个问题,那就是你定义的东西都必须使用,否则会报错,可能是警告吧,没看清楚。。。
不知道我在ACL里面定义的两个重复的IP,一个允许访问,一个不允许访问,最后会出什么样的结果呢。。。貌似,编译的时候会出错。。。
#This is a basic VCL configuration file for varnish. See the vcl(7)#man page for details on VCL syntax and semantics.#Default backend definition. Set this to point to your content#server.backend netease {#设置后端服务器,与haproxy不同的是,backend中只能设定一个服务器,不过可以定义规则, .host = "183.136.156.182"; .port = "80"; .probe = { #探针,varnish将检查通过探针检查每个后端服务器是否健康.(怎么个机理,表示没看懂) .url = "/"; #哪个url需要varnish请求。 .interval = 5s; #检查的间隔时间 .timeout = 1 s; #等待多长时间探针超时 .window = 5; #varnish将维持5个sliding window的结果 .threshold= 3; #至少有3次.windows检查是成功的,就宣告backends健康 }}backend zhong { .host = "122.227.58.188"; .port = "80";}backend zzyl { .host = "127.0.0.1"; .port = "8080";}director gdb round-robin{ #服务器组,具体作用和haproxy的backend类似,round-robin的作用是指定算法来访问服务器组。 { .backend = netease; } { .backend = zhong; } { .backend = zzyl; }}#创建一个VCL关键字的访问控制列表。可以配置客户端的IP地址acl local { "localhost"; "192.168.2.0"/24; #/* and everyone on the local network */ ! "192.168.2.125"; #/* except for the dial in router (表示排除在外)*/}#Below is a commented-out copy of the default VCL logic. If you#redefine any of these subroutines, the built-in logic will be#appended to your code.sub vcl_recv { #return (vcl_error); 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); } 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); } #下面三个if语句要放在这里,如果放到fetch中就会失效的 if (req.http.host ~ "^www.163.com$" && client.ip ~ local){ set req.backend = netease; } if (req.http.host ~ "^www.53kf.com$"){ set req.backend = gdb;#这边就是对服务器组的使用 } if (req.http.host ~ "(zzy)?\.zzyl\.com"){#~符号是正则表达式匹配,也可以作为acl访问控制列表的匹配 set req.backend = zzyl; } return (lookup); #return (error);}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 (error); 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 (error); return (hit_for_pass); } 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-zzy</p> </body> </html> "}; return (deliver);}sub vcl_init { return (ok);}sub vcl_fini { return (ok);}
- Varnish简单配置
- Varnish基础原理及简单配置
- varnish的安装与简单配置
- Varnish+Nginx 配置----Varnish
- varnish配置
- Varnish配置
- varnish 配置
- Varnish的简单配置与Drupal的集成
- Varnish简单介绍
- varnish 简单应用
- varnish cache 配置使用
- varnish cache 配置使用
- varnish安装配置全过程
- haproxy + varnish cache配置
- Linux+varnish安装配置
- varnish安装配置
- varnish安装配置
- varnish配置详解
- javascrip语句基础(1)
- 我用过的计算机编程语言
- 时间格式校验
- NoSQL技术详解
- gdb命令杂集
- Varnish简单配置
- 1008 Putting Apples
- ubuntu12.04安装ssh和telnet服务器
- checkbox 全选
- java异常常见类型
- HIVE元数据表/数据字典
- 在Internal Table 中使用AT FIRST , AT NEW, AT THE END OF , AT LAST, SUM
- asp.net webservice修改类名
- 谈谈即时通讯开发平台AnyChat是怎么解决P2P的传输瓶颈的?