Kristian Lyngstol a écrit : > On Wed, Apr 22, 2009 at 08:41:58AM +0200, Augustin Amann wrote: > >> 1) RP do GET to the backend >> 2) backend reply a 302 to another server >> 3) RP do a GET to this new location >> 4) RP return content and store it. >> >> Maybe i can use restart, like [1]. >> I have no idea where the new location (gived by 302) is, this could be a >> problem for a reverse proxy ! >> So I think it's not realy the varnish way to deal with "dynamic >> backend", but vcl is powerfull, >> and if I can define backend host and url on the fly, it could save my day ! >> > > In vcl_fetch: > > if (obj.status == 302) { > set req.url = obj.http.Location; > restart; > } > > The normal routines in vcl_recv will have to determine which backend to use > based on the new req.url. This will have to be pre-defined backends, so no > random redirects I'm afraid. > > Hi Kristian, Thank you for your reponse. That's what I supected ...
For my needs, I combined squid to varnish, like this: # Varnish VCL: backend squid { .host = "127.0.0.1"; .port = "3128"; } sub vcl_fetch { if (obj.status == 302 || obj.status == 301) { #set req.backend = squid; set req.url = obj.http.Location; restart; } } # squid.conf http_port 3128 transparent It works like a charm ... :) Best Regards, Augustin. _______________________________________________ varnish-misc mailing list varnish-misc@projects.linpro.no http://projects.linpro.no/mailman/listinfo/varnish-misc