VCLのsubroutines
built-in subroutinesのdocs
参考
Varnishのeventに応じて行う処理を指定する
引数は取らない
return()は値を返すわけではない
次のsubroutineに移行することを意味する
subroutines間の状態共有には、VCL変数やHTTP headerを使う
global変数を扱う感じになる
同名のsubroutineを複数定義した場合は、両方呼び出される
これは、ファイルを跨いでいても適用されるので注意が必要
overrideされるわけではない
途中でreturnされれば後続のものは呼ばれない
client side
Backend Side
originが4xx/5xxを返した時に呼ばれる(?)
自作する
code:vcl
sub pipe_if_local {
if (client.ip ~ local) {
return (pipe);
}
}
命名にvcl_を使ってはならない
関数定義というよりは、処理のグルーピングのイメージ
引数はない
実行後に値を返さない
returnと書いているのに値を返さないのは違和感あるmrsekut.icon
呼ぶ
code:vcl
call pipe_if_local
return (<action>)
関数との見分け方
関数との違い