バックエンドにはラウンドロビン ディレクターを備えた 3 つのサーバーがあります。
応答を取得したサーバーの名前または IP を含む X-Server-By ヘッダーを varnish に書き込ませたいのですが、どうすればよいですか?
答え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;
}