vmod_header - Header VMOD for Varnish
import header [from "path"] ;
Varnish Module for manipulation of duplicated HTTP headers, for instance
multiple Set-Cookie headers.
Example:
vcl 4.0;
import header;
backend default { .host = "192.0.2.11"; .port = "8080"; }
sub vcl_backend_response {
if (beresp.http.Set-Cookie) {
# Add another line of Set-Cookie in the response.
header.append(beresp.http.Set-Cookie, "VSESS=abbabeef");
# CMS always set this, but doesn't really need it.
header.remove(beresp.http.Set-Cookie, "JSESSIONID=");
}
}
- •
- VOID append(HEADER, STRING_LIST)
- •
- VOID copy(HEADER, HEADER)
- •
- STRING get(PRIV_CALL, HEADER, STRING)
- •
- VOID remove(PRIV_CALL, HEADER, STRING)
- Prototype
- VOID append(HEADER, STRING_LIST)
- Description
- Append an extra occurrence to an existing header.
- Example
- :: header.append(beresp.http.Set-Cookie, "foo=bar")
- Prototype
- VOID copy(HEADER, HEADER)
- Description
- Copy all source headers to a new header.
- Example
- :: header.copy(beresp.http.set-cookie, beresp.http.x-old-cookie);
- Prototype
- STRING get(PRIV_CALL, HEADER header, STRING regex)
- Description
- Fetches the value of the first header that matches the given
regular expression regex.
- Example
- :: set beresp.http.xusr =
header.get(beresp.http.set-cookie,"user=");
- Prototype
- VOID remove(PRIV_CALL, HEADER header, STRING regex)
- Description
- Remove all occurences of header that matches regex.
- Example
- ::
header.remove(beresp.http.set-cookie,"^(?!(funcookie=))");
The development of this plugin was made possible by the sponsorship of Softonic,
http://en.softonic.com/ .
Also thanks to Imo Klabun and Anders Nordby for bug reports.
You can't use dynamic regular expressions, which also holds true for normal
regular expressions in regsub().