mor*_*bio 1 varnish varnish-vcl
我在我的vcl中有重复的代码,我想创建自定义函数而不嵌入内联C代码.有可能的?
非常感谢您的阅读!最好的祝福
您可以像这样定义自定义子例程
sub my_subroutine {
...
}
Run Code Online (Sandbox Code Playgroud)
并称之为:
call my_subroutine;
Run Code Online (Sandbox Code Playgroud)
来自:http://book.varnish-software.com/4.0/chapters/VCL_Basics.html
VCL中的子程序既不接受参数也不接受返回值.每个子例程都通过调用return(action)来终止,其中action是指示所需结果的关键字.子例程可以检查和操纵HTTP头字段以及每个请求的各种其他方面.子例程指示如何处理请求.
子程序示例:
sub pipe_if_local {if(client.ip~local){return(pipe); }}
要调用子例程,请使用call关键字,后跟子例程的名称:
call pipe_if_local;
Varnish有内置的子程序,它们与Varnish工作流程挂钩.这些内置子程序都命名为vcl_*.你自己的子程序无法用vcl_开始它们的名字.