I have three servers in the backend, with a round robin director.
I would like varnish to write a X-Server-By header with the name or ip of the server from which the response was fetched, how can this be done?
In Varnish 3.0.2 I use:
sub vcl_fetch {
set beresp.http.X-Backend = beresp.backend.name;
}
Works perfectly.
vcl_fetch
has been renamed vcl_backend_response
. Otherwise this works there too.
sub vcl_fetch {
set obj.http.X-Backend = req.backend;
}
Tested on 2.0.6 in my (non round robin) setup. It should give you something to go on.
set beresp.http.X-Backend = req.backend;
, however it will still only report the backend's id so it will not be that useful with round-robin backends.
Jul 4, 2012 at 13:39
You can set the header on your web server eg x-host: server2 and then varnish will return that as part of the response to a cache hit.
I have this working on apache and it works perfectly.
The following is not tested, but might get you started:
sub vcl_deliver {
set resp.http.X-Served-By = server.hostname;
deliver;
}