caching and hiding 302 redirects
    Stroomer, Jeff 
    Jeff.Stroomer at disney.com
       
    Wed Sep  7 21:41:01 CEST 2011
    
    
  
Varnish folks,
I'm trying to combine Varnish with a Tomcat  servlet  to make a fancy reverse proxy.  The idea is that Varnish forwards a URL to the servlet, which uses a 302 redirect to tell Varnish what the "real" URL should be.  For this to work well I need Varnish to do two things: 1) cache the 302 redirects from the servlet, and also 2) hide the redirect from the client.  It seems like I can get  Varnish to do one or the other, but not both simultaneously.
I'm using the following in default.vcl (which is more or less the approach described in http://www.gossamer-threads.com/lists/varnish/dev/15409):
sub vcl_fetch {
  if (beresp.status == 302) {
    set req.url = beresp.http.Location;
   restart;
  }
}
This works, and hides the redirect from the client, but doesn't cache the 302 response.  I also tried this:
sub vcl_fetch {
  if (beresp.status == 302) {
    set req.url = beresp.http.Location;
   return(deliver);
  }
}
This also works, and caches the 302 response, but does not hide the 302 from the client.
I am guessing that vcl_deliver is the subroutine in which back-end responses get pushed into the cache, which means that if I hide the redirect by doing a restart, then I lose my chance to cache the 302 response.
Is this right?  Any suggestions as to how I can cache the 302 response and also hide the redirect from the client?
Jeff
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20110907/cf11266f/attachment-0003.html>
    
    
More information about the varnish-misc
mailing list