清漆 pass-through 路线

Varnish pass-through route

我的应用程序前面有一个 Varnish 缓存设置。我希望某些路由不被缓存,而是完全传递给其他服务。 我需要像 X-Forwarded-For 一样保留 headers,这样底层服务就不会注意到任何东西。

我试过“管道”配置,但它没有像我例外的那样工作。 我正在寻找完整的配置部分。

我试过的配置如下:

backend blog {
    .host = "127.0.0.1";
    .port = "8083";
}

sub vcl_recv {
    if (req.url ~ "^/blog/") {
        set req.backend_hint = blog;
        return (pipe);
    } else {
        set req.backend_hint = default;
    }
}

您正在寻找 return(pass),它不会提供缓存中的内容并直接连接到后端。

return(pipe) 逻辑仅在您不确定传入请求是否实际上是 HTTP 请求时才有用。通过管道传输请求,您可以消除所有 HTTP 概念并将数据减少为纯 TCP。

感谢 return(pass) 所有 headers 得以维护。

这是您的代码示例的更新版本:

vcl 4.1;

backend blog {
    .host = "127.0.0.1";
    .port = "8083";
}

sub vcl_recv {
    if (req.url ~ "^/blog/") {
        set req.backend_hint = blog;
        return (pass);
    } else {
        set req.backend_hint = default;
    }
}