如何讓 varnish 在 http 回應標頭中傳回它從哪個後端獲取回應的資訊?

如何讓 varnish 在 http 回應標頭中傳回它從哪個後端獲取回應的資訊?

我在後端有三台伺服器,有一個循環控制器。

我希望 varnish 編寫一個 X-Server-By 標頭,其中包含從中獲取回應的伺服器的名稱或 ip,這如何完成?

答案1

在 Varnish 3.0.2 我使用:

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

工作完美。

答案2

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

在我的(非循環)設定中在 2.0.6 上進行了測試。它應該給你一些繼續下去的東西。

答案3

您可以在 Web 伺服器上設定標頭,例如 x-host: server2,然後 varnish 將傳回該標頭作為快取命中回應的一部分。

我在 apache 上有這個工作,它工作得很好。

答案4

以下內容未經測試,但可能會幫助您入門:

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

相關內容