Strange Issue with cache and logged in users
Guillaume Quintard
guillaume at varnish-software.com
Thu May 26 16:28:27 CEST 2016
Are you able to isolate the faulty request in varnishlog? The one that
should be passed and isn't?
--
Guillaume Quintard
On Thu, May 26, 2016 at 4:07 PM, Pinakee BIswas <pinakee at waltzz.com> wrote:
> Further adding the observations with the following scenario:
>
> 1. Visit URL A-not-loggedin
> 2. Visit URL B-not-loggedin
> 3. User logs in
> 4. Visit URL A after logging in - varnish is serving the page -
> A-not-loggedin
> 5. Visit URL B after logging in - varnish is serving the page
> B-not-loggedin
>
> This means Varnish is serving the pages just visited (till cache expiry)
> irrespective of the fact that the page is being fetched from backend and
> that there is a pass in vcl_recv.
>
> I am unable to understand the above mentioned behavior - the VCL logic I
> used is simple as mentioned in the mail below.
>
> Regards,
>
> Pinakee
>
> On 26/05/16 6:24 pm, Pinakee BIswas wrote:
>
> Hi,
>
> I am facing a strange problem with Varnish cache. Ours is an ecommerce
> site wherein users can visit with or without logging in. I have written the
> VCL to unset cookies when user not logged in.
>
> The scenario is user logs in and then logs out. When the user logs out,
> Varnish is still delivering logged in pages to the user which is strange as
> the requests for logged in users go all the way to the backend and the
> pages are not supposed to get cached. I have been looking into this since
> quite some time and still not able to figure out the reason.
>
> Would appreciate any help.
>
> Thanks,
>
> Pinakee
>
> PFA the output from varnishlog.
>
> Following is the VCL code:
>
> sub vcl_recv {
> # Happens before we check if we have this in cache already.
> #
> # Typically you clean up the request here, removing cookies you don't
> need,
> # rewriting the request, etc.
> set req.backend_hint = uwsgi;
>
> if (req.method == "GET") {
> if ((req.http.Cookie !~ "sessionid=") &&
> (req.http.Cookie !~ "loggedin_user=") &&
> (req.url !~ "^/esi")) {
> unset req.http.cookie; # strip the cookies - we don't need
> them
> }
> }
> }
>
> sub vcl_backend_response {
> # Happens after we have read the response headers from the backend.
> #
> # Here you clean the response headers, removing silly Set-Cookie
> headers
> # and other mistakes your backend does.
> if (bereq.method == "GET") {
> set beresp.do_esi = true;
> if ((beresp.http.Set-Cookie !~ "jivaana_user=") &&
> (beresp.http.Set-Cookie !~ "sessionid=") &&
> (bereq.http.Cookie !~ "sessionid=") &&
> (bereq.http.Cookie !~ "jivaana_user=") &&
> (bereq.url !~ "^/product/addtobasket")) {
> #unset beresp.http.Set-Cookie;
> set beresp.uncacheable = false;
> return(deliver);
> }
> }
> }
>
>
>
> _______________________________________________
> varnish-misc mailing list
> varnish-misc at varnish-cache.org
> https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.varnish-cache.org/lists/pipermail/varnish-misc/attachments/20160526/2e52989d/attachment.html>
More information about the varnish-misc
mailing list