如何在default.vcl清漆中创建自定义功能?

时间:2016-01-22 22:29:35

标签: varnish varnish-vcl

我在我的vcl中有重复的代码,我想创建自定义函数而不嵌入内联C代码。 ¿有可能吗?

非常感谢您的阅读! 最诚挚的问候

1 个答案:

答案 0 :(得分:5)

您可以定义像这样的自定义子程序

sub my_subroutine {
  ... 
}

并将其称为:

call my_subroutine;

来自:http://book.varnish-software.com/4.0/chapters/VCL_Basics.html

  

VCL中的子程序既不接受参数也不接受返回值。每   子程序通过调用return(action)终止,其中action是a   表示所需结果的关键字。子程序可以检查   并操纵HTTP标头字段和每个方面的各个方面   请求。子例程指示如何处理请求。

     

子程序示例:

     

sub pipe_if_local {if(client.ip~local){       返回(管道); }}

     

要调用子例程,请使用call关键字,后跟   子程序的名称:

     

调用pipe_if_local;

     

Varnish有内置的子程序,它们挂在Varnish上   流程。这些内置子程序都命名为vcl_ *。你自己   子程序无法用vcl _。

开始它们的名字