歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> varnish 4.0官方文檔翻譯 Syntax

varnish 4.0官方文檔翻譯 Syntax

日期:2017/2/27 15:48:38   编辑:Linux教程

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開始。

Copyright © Linux教程網 All Rights Reserved