我在我的应用程序前面设置了一个Varnish缓存。我希望一些路由不被缓存,但完全通过其他服务。我需要保留像X-Forwarded-For这样的头部,这样底层服务就不会注意到任何东西。
我尝试过“管道”配置,但它不能像我预期的那样工作。我正在寻找完整的配置部分。
我尝试过的Config是这样的:
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;
}
}发布于 2021-09-17 09:14:29
您正在寻找的是return(pass),它不会提供来自缓存的内容,而是直接连接到后端。
只有当您不确定传入的请求是否是return(pipe)请求时,HTTP逻辑才有用。通过管道传输请求,您去掉了HTTP的所有概念,并将数据简化为普通的TCP。
多亏了return(pass),所有的头都被维护了。
以下是您的代码示例的更新版本:
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;
}
}https://stackoverflow.com/questions/69220552
复制相似问题