2010-03-09 28 views
1

Nous avions une configuration de proxy de cache en utilisant une version très précoce de Varnish (0.5ish, je pense) qui utilisait l'action 'restart' envoyer des requêtes à un second backend dans le cas d'un 404 sur le premier.Utilisation d'un second backend avec Varnish 1.0.3-2 dans le cas de 404 depuis le premier backend

La nouvelle version de Varnish ne semble pas supporter cela - l'action 'restart' ne semble plus être supportée, et la variable 'req.restarts' n'est plus reconnue. Un tel comportement est-il possible?

La documentation semble être obsolète, tout comme la plupart des exemples en ligne. L'homme 7 vcl semble refléter le comportement actuel.

Si ce n'est pas possible avec Varnish, pouvez-vous suggérer une autre solution?

Voici les bits correspondants de notre ancienne configuration 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; 
    } 
} 

Répondre

1

Il semble que ce comportement a été rétabli dans les versions les plus récentes de Varnish.