varnish配置语法(应用)

简介:

varnish配置主要分为:后端配置,ACL配置,probes配置,directors配置,核心子程序配置几大块。其中后端配置是必要的,在多台服务器中还会用到directors配置,核心子程序配置。


后端配置:即给varnish添加反代服务器节点,最少配置一个。

ACL配置:即给varnish添加访问控制列表,可以指定这些列表访问或禁止访问。

probes配置:即给varnish添加探测后端服务器是否正常的规则,方便切换或禁止对应后端服务器。

directors配置:即给varnish添加负载均衡模式管理多个后端服务器。

核心子程序配置:即给varnish添加后端服务器切换,请求缓存,访问控制,错误处理等规则。


varnish基本语法 http://php2012web.blog.51cto.com/5585213/1680580


varnish中内置子程序有:

注:varnish内置子程序均有自己限定的返回动作  return (动作);  不同的动作将调用对应下一个子程序。

vcl_recv

开始处理请求,通过 return (动作); 选择varnish处理模式,默认进入hash缓存模式(即return(hash);),缓存时间为配置项default_ttl(默认为 120秒)过期保持时间default_grace(默认为10秒)。该子程序一般用于模式选择,请求对象缓存及信息修改,后端节点修改,终止请求等操作。

可操作对象:(部分或全部值)

读:client,server,req,storage

写:client,req

返回值:

synth(status code,reason);  定义响应内容。

pass  进入pass模式,并进入vcl_pass子程序。

pipe  进入pipe模式,并进入vcl_pipe子程序。

hash  进入hash缓存模式,并进入vcl_hash子程序,默认返回值

purge  清除缓存等数据,子程序先从vcl_hash再到vcl_purge。


vcl_pipe

pipe模式处理,该模式主要用于直接取后端响应内容返回客户端,可定义响应内容返回客户端。该子程序一般用于需要及时且不作处理的后端信息,取出后端响应内容后直接交付到客户端不进入vcl_deliver子程序处理。

可操作对象:(部分或全部值)

读:client,server,bereq,req,storage

写:client,bereq,req

返回值:

synth(status code,reason);  定义响应内容。

pipe  继续pipe模式,进入后端vcl_backend_fetch子程序,默认返回值


vcl_pass

pass模式处理,该模式类似hash缓存模式,仅不做缓存处理。

可操作对象:(部分或全部值)

读:client,server,req,storage

写:client,req

返回值:

synth(status code,reason);  定义响应内容。

fetch  继续pass模式,进入后端vcl_backend_fetch子程序,默认返回值


vcl_hit

hash缓存模式时存在hash缓存时调用,用于缓存处理,可放弃或修改缓存。

可操作对象:(部分或全部值)

读:client,server,obj,req,storage

写:client,req

返回值:

restart 重启请求。

deliver 交付缓存内容,进入vcl_deliver子程序处理,默认返回值

synth(status code,reason);  定义响应内容。


vcl_miss

hash缓存模式时不存在hash缓存时调用,用于判断性的选择进入后端取响应内容,可以修改为pass模式。

可操作对象:(部分或全部值)

读:client,server,req,storage

写:client,req

返回值:

restart 重启请求。

synth(status code,reason);  定义响应内容。

pass 切换到pass模式,进入vcl_pass子程序。

fetch  正常取后端内容再缓存,进入vcl_backend_fetch子程序,默认返回值


vcl_hash

hash缓存模式,生成hash值作为缓存查找键名提取缓存内容,主要用于缓存hash键值处理,可使用hash_data(string) 指定键值组成结构,可在同一个页面通过IP或cookie生成不同的缓存键值。

可操作对象:(部分或全部值)

读:client,server,req,storage

写:client,req

返回值:

lookup 查找缓存对象,存在缓存进入vcl_hit子程序,不存在缓存进入vcl_miss子程序,当使用了purge清理模式时会进入vcl_purge子程序,默认返回值


vcl_purge

清理模式,当查找到对应的缓存时清除并调用,用于请求方法清除缓存,并报告。

可操作对象:(部分或全部值)

读:client,server,req,storage

写:client,req

返回值:

synth(status code,reason);  定义响应内容。

restart 重启请求。


vcl_deliver

客户端交付子程序,在vcl_backend_response子程序后调用(非pipe模式),或vcl_hit子程序后调用,可用于追加响应头信息,cookie等内容。

可操作对象:(部分或全部值)

读:client,server,req,resp,obj,storage

写:client,req,resp

返回值:

deliver 正常交付后端或缓存响应内容,默认返回值

restart 重启请求。


vcl_backend_fetch

发送后端请求之前调用,可用于改变请求地址或其它信息,或放弃请求。

可操作对象:(部分或全部值)

读:server,bereq,storage

写:bereq

返回值:

fetch 正常发送请求到到后端取出响应内容,进入vcl_backend_response子程序,默认返回值

abandon 放弃后端请求,并生成一个错误,进入vcl_backend_error子程序。


vcl_backend_response

后端响应后调用,可用于修改缓存时间及缓存相关信息。

可操作对象:(部分或全部值)

读:server,bereq,beresp,storage

写:bereq,beresp

返回值:

deliver 正常交付后端响应内容,进入vcl_deliver子程序,默认返回值

abandon 放弃后端请求,并生成一个错误,进入vcl_backend_error子程序。

retry 重试后端请求,重试计数器加1,当超过配置中max_retries值时会报错并进入vcl_backend_error子程序。


vcl_backend_error

后端处理失败调用,异常页面展示效果处理,可自定义错误响应内容,或修改beresp.status与beresp.http.Location重定向等。

可操作对象:(部分或全部值)

读:server,bereq,beresp,storage

写:bereq,beresp

返回值:

deliver 只交付 sysnthetic(string) 自定义内容,默认返回后端异常标准错误内容

retry 重试后端请求,重试计数器加1,当超过配置中max_retries值时会报错并进入vcl_backend_error子程序。


vcl_synth

自定义响应内容。可以通过synthetic()和返回值 synth 调用,这里可以自定义异常显示内容,也可以修改resp.status与resp.http.Location重定向。

可操作对象:(部分或全部值)

读:client,server,req,resp,storage

写:req,resp

返回值:

deliver 只交付 sysnthetic(string) 自定义内容,默认返回 sysnth 异常指定状态码与错误内容。

restart 重启请求。


vcl_init

加载vcl时最先调用,用于初始化VMODs,该子程序不参与请求处理,仅在vcl加载时调用一次。

可操作对象:(部分或全部值)

读:server

写:

返回值:

ok 正常返回,进入vcl_recv子程序,默认返回值


vcl_fini

卸载当前vcl配置时调用,用于清理VMODs,该子程序不参与请求处理,仅在vcl正常丢弃后调用。

可操作对象:(部分或全部值)

读:server

写:

返回值:

ok 正常返回,本次vcl将释放,默认返回值



以下是个人画的一个子程序调用流程图,通过大部分子程序的return返回值进入下一步行动,用于参考,如有不当还请指出:(restart,retry未包含)

wKioL1XCuCfhjc2vAANZ3bT5jDE715.jpg

本文转自  ttlxihuan    51CTO博客,原文链接:http://blog.51cto.com/php2012web/1682215

相关文章
|
4月前
|
自然语言处理 前端开发 应用服务中间件
nginx的Location语法规则
nginx的Location语法规则
|
6月前
|
网络协议 JavaScript 应用服务中间件
【Nginx用法】nginx配置内容
【Nginx用法】nginx配置内容
32 0
|
1月前
|
存储 缓存 运维
LAMP+Varnish缓存详解(一)——Varnish简介
LAMP+Varnish缓存详解(一)——Varnish简介
18 0
|
应用服务中间件 PHP nginx
Nginx重写功能(rewrite与location)(二)
Nginx重写功能(rewrite与location)(二)
344 0
|
Java 应用服务中间件 PHP
Nginx重写功能(rewrite与location)(一)
Nginx重写功能(rewrite与location)(一)
239 0
|
存储 缓存 应用服务中间件
nginx 缓存大小的含义
上一篇文章,我们已经介绍了解决服务器 net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content) 问题的方法,是通过修改 nginx 代理服务的缓存大小,具体的修改方法如下: proxy_buffer_size 128k; proxy_buffers 32 128k; proxy_busy_buffers_size 128k; 很多人不禁要问,这三个配置项,它们具体都有哪些功能呢?我们今天就来揭秘一下。
1127 0
|
Web App开发 应用服务中间件 Go
|
Web App开发 应用服务中间件 nginx
Nginx Location语法和Rewrite语法(学习笔记七)
1 Location语法规则 1.1 Location规则 语法规则: location [=|~|~*|^~] /uri/ {… } 首先匹配 =,其次匹配^~,其次是按文件中顺序的正则匹配,最后是交给 /通用匹配。
1306 0