文档章节

varnish 4.0 官方文档翻译13-VCL Syntax

wild-life
 wild-life
发布于 2015/06/15 16:55
字数 647
阅读 108
收藏 0

VCL Syntax

varnish从C继承了很多,同时它读起来像简单的C或者是Perl。

块由大括号分隔,语句用分号结束,注释可以根据自己的喜好来写为C,C ++或Perl的注释。

注意VCL不包含任何循环和跳转语句。

本节提供大致最重要部分的语法。完整的VCL语法文档请查看https://www.varnish-cache.org/docs/4.0/reference/vcl.html#reference-vcl

Strings

基本的字符是被双引号引起来,像"...",同时不可以跨行。 反斜杠不是特别的,例如regsub你不需要对\进行转义:

regsub("barf", "(b)(a)(r)(f)", "\4\3\2p") -> "frap"

长字符应该被{"..."}。它们可以包含任何字符包括"、跨行、除了NUL(0×00)字符等控制字符。如果你真的想字符串中使用NUL字符,VMOD,使得它可以创建这样的字符串。

Access control lists (ACLs)

ACL申明创建和初始化一个权限控制列表,通常用来匹配客户端地址:

acl local {
    "localhost";         // myself
    "192.0.2.0"/24;      // and everyone on the local network
    ! "192.0.2.23";      // except for the dialin router
}

如果ACL条目指定了varnish无法解析的主机名,它会匹配任何和它相比的地址。因此,如果它前面有一个否定标记,它将拒绝任何和它相比的地址,这可能和你想的不一致。如果该条目括号的,它将简单地被忽略。

匹配ip地址,使用VCL,简单的使用匹配操作:

if (client.ip ~ local) {
    return (pipe);
}

Operators

下面这些操作时可以在VCL中使用的,查看例子来进一步了解这些操作。

=
Assignment operator.赋值操作
==
Comparison.比较
~
Match. Can either be used with regular expressions or ACLs.匹配操作,可以使用正则或者ACLs
!
Negation.非
&&
Logical and 逻辑与
||
Logical or  逻辑或

Subroutines

子程序可以让一段代码易读的同时可以重用代码。

sub pipe_if_local {
  if (client.ip ~ local) {
    return (pipe);
  }
}

在VCL的子程序,不能引入参数,也不会返回值

调用子程序,使用call关键字,后面跟上被调用的子程序的名字:

call pipe_if_local;

varnish已经有了一些内建的子程序,当请求流通过varnish时将会调用这些内建的子程序。这些所有的内建子程序被命名成vcl.* 你自己编写的子程序不能以vcl开始。


© 著作权归作者所有

共有 人打赏支持
wild-life
粉丝 16
博文 94
码字总数 56147
作品 0
成都
技术主管
私信 提问
varnish 4.0 官方文档翻译4-varnish用户手册概况

The Varnish Users Guide varnish用户手册 varnish 文档包含三个主要的文档: The Varnish Tutorial 解释一些基本的东西让你开始使用varnish The Varnish Users Guide 说明varnish怎样工作以...

wild-life
2015/05/09
0
0
varnish 4.0 官方文档翻译14-Built in subroutines

Built in subroutines vcl_recv 在接收到完整的客户端请求后调用这个子程序。它决定是否处理请求,怎样处理请求,使用哪一个后端。 它也可运用于修改请求,一些经常自己做的事情。 vcl_recv...

wild-life
2015/06/15
0
0
varnish 4.0 官方文档翻译12-VCL

VCL - Varnish Configuration Language 本节包含了怎样通过varnish配置语言vcl来通知varnish如何处理http请求。 varnish是高度结构化的系统。大多数其他的系统使用配置指令,在那里你基本上打...

wild-life
2015/06/15
0
0
varnish 4.0 官方文档翻译5-varnish概况

The Big Varnish Picture varnish概况 本节将回答这个问题:“varnish”到底是什么,命名的点点滴滴。 varnish两个主要的部分是在varnisd项目中的两个进程。第一个进程被叫做“the manager”...

wild-life
2015/05/09
0
0
varnish 4.0 官方文档翻译17-Hashing

Hashing 实质上,当Varnish存储内容在缓存中时,它也把如何发现这个对象的哈希键和对象一起存储。默认设置的hash键是基于内容的的主机名或者ip地址和URL计算出的。(url+host或者url+ip) 默...

wild-life
2015/06/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

小程序-星星评分

//UI界面 <block wx:for='{{item.rateArray}}' wx:key wx:for-item="i" > <image wx:if='{{ i==0}}' src='../../assets/xing4.png'></image> <image wx:if='{{ i==1}}' src='../../assets/xi......

lsy999
23分钟前
1
0
JavaScript与WebAssembly进行比较

本文由云+社区发表 作者:QQ音乐前端团队 在识别和描述核心元素的过程中,我们分享了构建SessionStack时使用的一些经验法则,这是一个轻量级但健壮且高性能的JavaScript应用程序,以帮助用户...

腾讯云加社区
24分钟前
3
0
如何设计一个 RPC 系统

RPC是一种方便的网络通信编程模型,由于和编程语言的高度结合,大大减少了处理网络数据的复杂度,让代码可读性也有可观的提高。但是RPC本身的构成却比较复杂,由于受到编程语言、网络模型、使...

编程SHA
25分钟前
1
0
API权限控制与安全管理

一、API权限控制范围 1、首先验证web端请求参数: (1)web请求参数:渠道、ServiceName、版本、Airline、时间戳(yyyyMMddhhmmssSSS)、reqXML、Language、签名 (2)请求不能为空,并且格式...

Jack088
26分钟前
2
0
最热门的13个Java微服务框架

曾经的服务器领域有许多不同的芯片架构和操作系统,经过长期发展,Java的“一次编译,到处运行”使得它在服务器领域找到一席之地,成为程序员们的最爱 本文,我们将和大家分享13个可靠的Jav...

java菜分享
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部