●VCL 中文man page(1)

三、 Varnish 参考手册
 
         VCL varnish configuration language
         Author:    Dag-Erling Smørgrav
Author:    Poul-Henning Kamp
Author:    Kristian Lyngstøl
Author:    Per Buer
Date:        2010-06-02
Version:   1.0
Manual section:       7
 
DESCRIPTION 描述
         VCL 语言是 varnish HTTP 加速器)的一种限定域语言,目的在于规定请求的处理和内容的缓存策略。
         当一个新的配置文件被加载, varnish 管理进程把 vcl 转换成 c 代码,然后编译成动态共享库连接到服务器进程。
SYNTAX 语法
         VCL 的语法相当简单,和 c perl 相似。使用花括号做界定符,使用分号表示声明结束。注释和 C C++ perl 语法一样,你可以自己选择。
         除此之外还类似 c 语法,比如赋值( = )、比较( == )、和一些布尔值(!、 && || ), VCL 支持正则表达式, ACL 匹配使用 ~ 操作。
         不同于 C perl 的地方,反斜杠( \ )在 VCL 中没有特殊的含义。只是用来匹配 URLs ,所以没有反斜线,请大家自由使用正则表达式。
         把所有的字符串都连接在一起,并不对他们做任何操作。
         分配和介绍设置关键字, VCL 没有用户定义的变量,只能给 backend 、请求、内容这些目标的变量赋值,这些内容大部分是手工输入得,而且给这些变量分配值的时候,必须有一个 VCL 兼容的单位         
VCL if 测试,但是没有循环。
Backend declarations (声明backend
一个 backend 申明创建和初始化一个 backend 目标:
backend www {
.host = "www.example.com";
.port = "http";
}
一个请求可以选着一个 Backend
if (req.http.host ~ "^(www.)?example.com$") {
  set req.backend = www;
}
为了避免后端服务器过载, .max_connections 可以设置连接后端服务器得最大限制数。
                   backend 中申明的 timeout 参数可以被覆盖, .connect_timeout 等待连接后端的时间, .first_byte_timeout 等待从 backend 传输过来的第一个字符的时间, .between_bytes_timeout 两个字符的间隔时间
                   示例:
backend www {
  .host = "www.example.com";
  .port = "http";
  .connect_timeout = 1s;
  .first_byte_timeout = 5s;
  .between_bytes_timeout = 2s;
}
         DIRECTORS
Directors 基于健康状态和 per-director 算法选择不同的客户端。现在存在随机和循环两种 director
         定义 Directors
director b2 random {
  .retries = 5;
  {
    // We can refer to named backends
    .backend = b1;
    .weight  = 7;
  }
  {
    // Or define them inline
    .backend  = {
      .host = "fs2";
    }
  .weight         = 3;
  }
}
         The random director
         任意的 director 使用 .retries. 这个参数指定查找可用后端的次数。默认 director 中的所有后端的 .retries 相同。
                   每个后端的选项 .weight , 和发送多少流量到这个后端有关。
         THE round-robin director
                   Round-robin 没有什么选项。
         Bckend probes (后端探针)
                   探测后端,确定他们是否健康。返回的状态使用 req.backend.healthy 核对。 .window 我们检查到的最近的 polls 数量。 .threshold 多少 polls 成功,我们就认为后端是健康的。 .intial 是多少探针确定 varnish 状态正常,默认和 threshold 值一样。
                   一个后端定义探针示例:
backend www {
  .host = "www.example.com";
 .port = "http";
  .probe = {
    .url = "/test.jpg";
    .timeout = 0.3 s;
    .window = 8;
    .threshold = 3;
    .initial = 3;
  }
}
                   他可以指定原始的 http 请求:
backend www {
  .host = "www.example.com";
  .port = "http";
  .probe = {
    # NB: \r\n automatically inserted after each string!
    .request =
      "GET / HTTP/1.1"
      "Host: www.foo.bar"
      "Connection: close";
  }
}
         ACLS
一个 ACL 给一个访问控制列表命名,随后可以通过调用 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 不能解析,他将解析匹配到所有地址。
                   果你使用了一个否定标记(!),那么将拒绝匹配所有主机。
                   下面是一个匹配的示例:
                   if (client.ip ~ local) {
                     pipe;
                   }

你可能感兴趣的:(职场,page,man,休闲,VCL)