1

それが私のシナリオです:

1) Varnish ( 172.16.217.131:80) は、クライアントからリクエストを受け取ります。 http://172.16.217.131:80/a.png

2) リクエストはデフォルトのバックエンドに転送されます ( 127.0.0.1:8000)

3) デフォルトのバックエンドがリクエストを受け取り、処理します

4) その処理により、新しい URL が生成されます。つまり、http://172.16.217.132:80/a.png(**ご覧のとおり、IP が変更されています)。

5) 172.16.217.132:80Varnish の設定ファイルの別のバックエンド

6) 新しい URL は、Varnish によって提供される必要があるリソースを指します (そのリソースは通常、画像です)。

私の問題は次のとおりです。クライアントは、画像を取得するために 2 つの GET を実行する必要があります。

127.0.0.1:8000私の質問: 最初のバックエンド ( ) から応答を内部的に受信し、2 番目のバックエンド ( ) からデータをフェッチし172.16.217.132:80、その後クライアントにデータを送信するようにワニスを構成するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

2

ステップ4まで;

4) その処理により、新しい URL が生成されます。つまり、 http://172.16.217.132:80/a.png(**ご覧のとおり、IP が変更されています)。

HTTPリダイレクトになるということですか?次に、vcl_fetch でバックエンドの応答ステータス コードを確認し (301、302 などを確認)、Location ヘッダーを新しい URL として使用して、再起動します。Varnish Bookでこれの素晴らしい例を見つけました

sub vcl_fetch {
        if (req.restarts == 0 &&
                 req.request == "GET" &&
                 beresp.status == 301) {
                set beresp.http.location = regsub(beresp.http.location,"^http://","");
                set req.http.host = regsub(beresp.http.location,"/.*$","");
                set req.url = regsub(beresp.http.location,"[^/]*","");
                return (restart);
        }
}
于 2012-06-17T13:28:52.103 に答える