如何在后端正常时使用varnish传递数据&&当后端关闭时返回最后一个正常的beresq?

时间:2016-11-07 02:51:11

标签: caching varnish varnish-vcl

我需要varnish来直接返回数据,并在每次后端正常时更新缓存。当后端关闭时,我还需要varnish来从缓存中返回最后一个正常的beresq数据。我怎么用清漆做什么?

1 个答案:

答案 0 :(得分:0)

我只是解决它。当后端启动时,使用req.hash_always_miss = true传递数据。当后端关闭时,对FEATCH_FAILED做出响应并使用vcl_synth重新启动recv。

vcl 4.0;

backend default {
    .host = "127.0.0.1";
    .port = "4567";
}

sub vcl_recv {
    if (req.restarts == 0) {
        set req.hash_always_miss=true;
    } else {
        set req.hash_always_miss=false;
    }
}

sub vcl_backend_error {
    return (abandon);
}

sub vcl_synth {
    return (restart);
}