If you sometimes see the proper cookies being passed to the back-end, I would think this would be a client problem? The VCL logic in question should either always work or never work.
I just did a test of this, and I see the proper header hitting the back-end. Maybe you're seeing unexpectedly cookie-less requests? -- Ken On Jan 25, 2010, at 1:03 PM, John Norman wrote: > Folks, > > I've been trying to implement a technique posted here to restore > cookies on a cache miss. > > The original question is here: > > http://projects.linpro.no/pipermail/varnish-misc/2010-January/003505.html > > and an interesting answer is here: > > http://projects.linpro.no/pipermail/varnish-misc/2010-January/003506.html > > Below is my .vcl file. > > And again, here's the use case: > > We have certain pages that should never be cached. The user comes in > with cookies set: "session=foo" or some such. > > We strip the cookie and do a lookup. > > If there's a hit, return what is in the cache. > > If there's a miss, we'd like to fetch with the cookie. > > Then, in fetch, pass for pages set for no-cache, and deliver for those > that are public. > > It can be assumed that these pages are never hit first by non-cookied users. > > But -- I am seeing a lot of requests that have no cookies on the backend. > > John > > Here's the VCL: > > backend reviews0 { > .host = "127.0.0.1"; > .port = "7000"; > } > > backend reviews1 { > .host = "127.0.0.1"; > .port = "7001"; > } > > director reviews round-robin { > { .backend = reviews0; } > { .backend = reviews1; } > } > > sub vcl_recv { > > unset req.http.user-agent; > > set req.backend = reviews; > > if (req.request != "GET" && req.request != "HEAD") { > pass; > } > > set req.http.OLD-Cookie = req.http.Cookie; > unset req.http.cookie; > > lookup; > } > > sub vcl_miss { > if (req.http.OLD-Cookie) { > set bereq.http.Cookie = req.http.OLD-Cookie; > unset req.http.OLD-Cookie; > } > fetch; > } > > sub vcl_fetch { > > unset obj.http.user-agent; > > if (obj.http.Pragma ~ "no-cache" || > obj.http.Cache-Control ~ "no-cache" || > obj.http.Cache-Control ~ "private") { > pass; > } > > if (obj.http.Cache-Control ~ "public") { > unset obj.http.Set-Cookie; > deliver; > } > pass; > } > _______________________________________________ > varnish-misc mailing list > [email protected] > http://projects.linpro.no/mailman/listinfo/varnish-misc _______________________________________________ varnish-misc mailing list [email protected] http://projects.linpro.no/mailman/listinfo/varnish-misc
