ikeikeikeike's unk blog.

http://github-awards.com/users/ikeikeikeike

管理画面を提供しているWebFWに対応するVarnish vclの書き方

sub vcl_hash {

    # Cookie毎にキャッシュ
    hash_data(req.http.cookie);

    # Device毎にキャッシュ
    hash_data(req.http.X-Device);

    # HTML, JS, CSS毎にキャッシュ
    hash_data(req.http.Accept);

    # URL毎にキャッシュ
    hash_data(req.url);

    if (req.http.host) {
        hash_data(req.http.host);
    } else {
        hash_data(server.ip);
    }

    return (hash);
}

Varnishはvcl_hashで生成されたhash毎にキャッシュ生成するようなのでキャッシュしたい区別したい項目を列挙

管理画面なので今回はreq.http.cookieをhash_dataに入れておく。以上で私の場合はOKだった。

もちろん vcl_recv 内では req.request POST、req.http.Authorizationなどは return (pass); しています。

ansible-playbooks/default.vcl.j2 at master · ikeikeikeike/ansible-playbooks · GitHub