varnish---vcl语法

VCL是Varnish的配置语言,用于定义请求处理和文件缓存策略。VCL支持多种运算符、数据类型,如字符串、布尔值、时间和整数。它包含条件语句、子程序、变量以及后端定义、探针、ACL等功能。Varnish在加载新配置后会将其转换为C代码并编译。VCL中没有循环和迭代器,但提供了丰富的内置函数和对象,如bereq、beresp等,用于处理HTTP请求和响应。
摘要由CSDN通过智能技术生成

varnish—vcl语法

VCL

varnish配置语言

介绍

varnish是一个专门用于描述varnish请求处理和文件缓存策略规则的语言。

当一个新的配置加载后,varnishd管理进程将会将其转换为C代码并编译,然后加载到服务器进程中。

本文档侧重于VCL的语法。对于语法和语义的完整介绍,和示例可以参阅https://www.varnish-cache.org/docs/ 。

从varnish 4.0版本开始,每一个VCL文件都必须在文件开始处说明版本号VCL 4.0

运算符

在VCL中可以使用以下运算符:

  • = 赋值运算符
  • == 比较运算符
  • ~ 匹配运算符。既可以使用正则表达式,也可以使用ACLs。
  • ! 否定运算符。
  • && 逻辑与
  • || 逻辑或
条件运算

VCL有if和else语句。嵌套的逻辑可以使用elseif来实现(elsif/elif/else if这几个是一样的)。

请注意,VCL中没有任何的循环和迭代器。

字符串、布尔值、时间、时间单位和整数

在varnish中有各种数据类型,你可以设置或者取消这些:

set req.http.User-Agent = "unknown";
unset req.http.Range;
字符串

基本的字符串都是以双引号包括,不得包含换行符。长字符串包括在{"..."}中。他们可能会包含单双引号、换行符以及除了NUL(0x00)以外的其他控制字符。

布尔型

布尔型可以是true或者false。

时间

VCL中有时间类型,函数now返回一个时间。持续的时间可以被添加到一个时间中,来成为另外一个时间。在字符串中它会返回一个格式化的字符串。

持续时间

持续时间可以使用一个数字加一个单位来限定。数量可以是实数,因此1.5w也是被允许的。

  • ms 毫秒
  • s 秒
  • m 分钟
  • h 小时
  • d 天
  • w 周/星期
  • y 年
整数

某些字段可能是整数,在字符串语境下,它会返回一个字符串。

实数

VCL中可以使用实数,和整数一样,在字符串的语境下,它会返回字符串。

正则表达式

varnish支持Perl兼容的正则表达式(PCRE)。有关完整的说明可以参见PCRE(3)手册。

要发送一个标识给PCRE引擎,例如做不区分大小写的匹配,括号内添加一个问号。例如:

# If host is NOT example dot com..
if (req.http.host !~ "(?i)example.com$") {
    ...
}
包含语句

在另外一个文件中包含一个VCL文件可以使用include关键字:

include "foo.vcl";
导入语句

导入语句主要用来加载varnish模块(VMODs)。

import std;
sub vcl_recv {
   
    std.log("foo");
}
注释

单行注释可以使用//或者#。如果是多行注释的话可以使用/* block */。例如:

sub vcl_recv {
   
    // Single line of out-commented VCL.
    # Another way of commenting out a single line.
    /*
        Multi-line block of commented-out VCL.
    */
}
后端定义

一个后端声明创建和初始化唯一后端对象。声明使用关键词backend后面跟一个后端名字。实际的声明是在大括号里:

backend name {
    .attribute = "value";
}

唯一的一个强制必须有的属性是host。属性会从全局参数继承默认值。以下属性都是可用的:

  • host(必须)

要使用的主机。ip地址或者可以解析为一个ip地址的hostname都是可以的。

  • port

varnish应该连接的服务器端口

  • host_header

添加的主机头

  • connect_timeout

连接超时时间

  • first_byte_timeout

varnish等待从后端接受第一个字节的超时时间,参考http://jolestar.com/varnish-timeout/

  • between_bytes_timeout
  • </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值