複数のソース用の Varnish キャッシュ/プロキシ

複数のソース用の Varnish キャッシュ/プロキシ

Varnish 3.0.3を使用しています。

Web サイトは 2 つのドメインから画像を提供します。サイトのドメインと同じ URL を持つ画像は正常にキャッシュされ、Varnish 経由で提供されます。別のドメインからの画像は無視されます。画像の出所に関係なく、すべての画像を Varnish 経由で配信することを希望します。

2 つのアプローチを試しました。これらは 2 つの非常にシンプルな Varnish 構成です。これら 2 つの構成は機能しますが、2 番目のドメインのイメージは Varnish によって無視されます。ブラウザーのアクティビティを監視すると、それらのイメージは Varnish によって配信されるのではなく、2 番目のドメインに直接要求されています。

バックエンドには両方のドメインの画像がすべてあります。Web サイトは、2 つの異なるドメインの画像を取得するようにコーディングされています。Web サイトのコードを変更して 1 つのドメインを使用することはできません。

同様のシナリオは、Web サイトが Flickr アカウントから画像を取得したり、CDN から画像を取得したりする場合です。Varnish キャッシュを使用してそれらの画像も配信することは可能ですか? 別のバックエンドを指定することは理解していますが、私のテストでは、プライマリ ドメイン以外を Varnish で配信することはできません。

この背後にある目的は、リージョン エッジ ロケーションとして機能することです。訪問者がさまざまなソース/ドメインからコンテンツを取得するのではなく、Varnish サーバーがすべてのコンテンツを提供する必要があります。

1.

backend  default {
.host = "192.168.1.1";
.port = "http";
}

sub vcl_recv {
if (req.url ~ "\.(gif|jpg|jpeg|png)$") {
unset req.http.cookie;
unset req.http.Accept-Encoding;
unset req.http.Vary;
set req.backend = default;
return(lookup);
}
}

sub vcl_fetch {
set beresp.ttl = 24h;
set beresp.grace = 23h;
}

2.

backend  default {
.host = "192.168.1.1";
.port = "http";
}

sub vcl_recv {
#Primary domain of site
if (req.http.host == "www.domain.com") {
set req.backend = default;
return (lookup);
#Domain where images are stored
} elsif (req.http.host == "www.domain2.com") {
set req.backend = default;
return (lookup);
}
}

sub vcl_fetch {
set beresp.ttl = 24h;
set beresp.grace = 23h;
}

関連情報