<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body>
Hi,
<div><br>
</div>
<div>Best would be to move geoip lookup into varnish. That way you can set req.http.cookie value to the correct country before varnish looks up the object in its cache.</div>
<div><br>
</div>
<div>Regards, </div>
<div>Thierry</div>
<br>
<br>
<div>-------- Message d'origine --------</div>
<div>De : Max Clark </div>
<div>Date :29/01/2015 17:40 (GMT+01:00) </div>
<div>A : varnish-misc@varnish-cache.org </div>
<div>Objet : GeoIP Detection and Country Specific Content </div>
<div><br>
</div>
<div>Hello,
<div><br>
</div>
<div>We have been working to enable region specific content for our web site. The basic mechanism is already in place, specifically:</div>
<div><br>
</div>
<div>When a user visits the site and a cookie is not present the application server will compare their IP address with the GeoIP database. Based on the result the application server will generate the proper content for the user (different logo images, text,
etc...) and return this with a cookie specifying the edition for future requests bypassing the GeoIP lookup. The cookie will also allow the user to select a different region than what their IP resolves to.</div>
<div><br>
</div>
<div>Again this is working in the application, and Varnish was extended to match on the cookie value (named "edition") and to use the edition value as part of the hash data so there is a unique cache for the different regions.</div>
<div><br>
</div>
<div>Here's the problem:</div>
<div><br>
</div>
<div>When a user visits the site for the first time they do not have a cookie in the request. So Varnish has a blank value for the edition as part of the hash data. However this request when it hits the application server does resolve to a specific edition
and return the region content on the reply. This is being cached by Varnish and used for future requests by new users with no cookie.</div>
<div><br>
</div>
<div>Put simply, if the page is not in cache, and a browser from the UK does not have the edition cookie a page with UK content is generated and cached in Varnish. If a browser from the US goes to the same page, Varnish will serve the US user the UK cached
page because this is what was cached based on the hash data.</div>
<div><br>
</div>
<div>Without turning off caching for cookieless requests - how do we resolve this?</div>
<div><br>
</div>
<div>Thanks in advance,</div>
<div>Max</div>
</div>
</body>
</html>