Wie erreiche ich, dass Varnish im HTTP-Antwortheader zurückgibt, von welchem ​​Backend die Antwort stammt?

Wie erreiche ich, dass Varnish im HTTP-Antwortheader zurückgibt, von welchem ​​Backend die Antwort stammt?

Ich habe drei Server im Backend mit einem Round-Robin-Director.

Ich möchte, dass Varnish einen X-Server-By-Header mit dem Namen oder der IP des Servers schreibt, von dem die Antwort abgerufen wurde. Wie geht das?

Antwort1

In Varnish 3.0.2 verwende ich:

sub vcl_fetch {
    set beresp.http.X-Backend = beresp.backend.name;
}

Funktioniert perfekt.

Antwort2

sub vcl_fetch {
    set obj.http.X-Backend = req.backend;
}

Getestet auf 2.0.6 in meinem (nicht Round Robin) Setup. Es sollte Ihnen etwas geben, womit Sie weitermachen können.

Antwort3

Sie können den Header auf Ihrem Webserver festlegen, z. B. x-host: server2, und Varnish gibt diesen dann als Teil der Antwort auf einen Cache-Treffer zurück.

Ich habe dies auf Apache zum Laufen gebracht und es funktioniert perfekt.

Antwort4

Das Folgende wurde nicht getestet, könnte Ihnen aber beim Einstieg helfen:

sub vcl_deliver {
    set resp.http.X-Served-By = server.hostname;
    deliver;
}

verwandte Informationen