1

以前は、Varnishの非常に初期のバージョン(0.5ish、私は思う)を使用してキャッシングプロキシを設定していました。これは、最初の404の場合、「restart」アクションを使用して2番目のバックエンドにリクエストを送信しました。

新しいバージョンのVarnishはこれをサポートしていないようです。「restart」アクションはサポートされていないようで、「req.restarts」変数は認識されなくなりました。そのような振る舞いは可能ですか?

オンラインの例の多くがそうであるように、ドキュメントは古くなっているようです。man 7 vclは、現在の動作を反映しているようです。

ワニスでは不可能な場合、別の解決策を提案できますか?

古いVarnish構成の関連ビットは次のとおりです。

sub vcl_recv {

    # remove cookies
    remove req.http.Cookie;

    if (req.restarts == 0) {
        set req.backend = backend1;
    } else if (req.restarts == 1) {
        set req.backend = backend2;
    }

    # remove any query strings
    set req.url = regsub(req.url, "\?.*", "");

    # force lookup even when cookies are present
    if (req.request == "GET" && req.http.cookie) {
        lookup;
    }
}

sub vcl_fetch {
    # we might set a cookie from the Rails app
    remove obj.http.Set-Cookie;

    # force minimum ttl of 1 year
    if (obj.ttl < 31536000s) {
        set obj.ttl = 31536000s;
    }

    if (obj.status != 200 && obj.status != 302) {
        restart;
    }
}
4

1 に答える 1

1

この動作は、Varnishのより新しいバージョンで復元されたようです。

于 2010-03-09T16:30:04.013 に答える