Varnish从后端响应中删除特定的cookie

Mar*_*ski 3 cookies varnish varnish-vcl

我需要从清漆中的后端响应中删除特定的cookie.

我的后端服务器设置了一堆我不需要的cookie,不幸的是我无法控制,所以我想删除它们.

但是我需要一些cookie,所以我希望能够通过名字删除cookie.

例如,我想重命名名为bad_cookie的cookie,但同时保留一个名为good_cookie的cookie.

我发现了很多关于删除特定请求cookie的资源,但没有关于删除后端响应cookie的资源.

这在Varnish有可能吗?

mat*_*ege 5

如果你想重命名我认为它会是这样的:

sub vcl_fetch {
    #renamed after receiving the backend
    set beresp.http.set-cookie = regsuball(beresp.http.set-cookie, "bad_cookie", "good_cookie"); 
    set beresp.http.cookie = regsuball(beresp.http.cookie, "bad_cookie", "good_cookie"); }
}

sub vcl_deliver {
    #renamed before sending the client
    set resp.http.set-cookie = regsuball(beresp.http.set-cookie, "bad_cookie", "good_cookie"); 
    set resp.http.cookie = regsuball(beresp.http.cookie, "bad_cookie", "good_cookie"); }
}
Run Code Online (Sandbox Code Playgroud)

如果要删除所有 cookie:

sub vcl_fetch {
    #deleted after receiving the backend
    remove beresp.http.set-cookie;
    remove beresp.http.cookie;
}

sub vcl_deliver {
    #deleted before sending the client
    remove resp.http.set-cookie;
    remove resp.http.cookie;
}
Run Code Online (Sandbox Code Playgroud)

beresp.http.set-cookie只读取第一个Set-Cookie标头,如果你想删除一些并保持其他人可以使用:github.com/varnish/libvmod-header**