Varnish:有条件地调用 vcl_pipe

Varnish:有条件地调用 vcl_pipe

据我了解,Varnish流水线图vcl_pipe只能从 调用vcl_recv

我正在设置一个 VCL,以便根据某些条件(包括访问控制)从后端提供二进制资源。

到目前为止,我想到的设置方式是这样的:通过所有检查,包括移出vcl_recv;如果设置了流式传输资源的条件,则设置一个标志;重新启动交易;首先检查标志vcl_recv,如果设置,则调用vcl_pipe

唯一的主要问题是我不知道如何设置http.request无法通过请求标头伪造的标志(例如 in)。因此,了解我的 VCL 的调用者可以轻松设置管道标志并绕过所有检查。

另一种选择是保留所有检查,vcl_recv但这可能很笨重甚至不可能。

欢迎提出建议。谢谢。

答案1

唯一的主要问题是我不知道如何设置标志

如果重新启动次数vcl_recv为零(这将表示 VCL 中的“初始”着陆,例如

sub vcl_recv {
    if (req.restarts == 0) {
        unset req.http.X-Foo; 
    }

哦,我发现正是你所追求的同时获得它的语法:)

相关内容