GeoIP Detection and Country Specific Content

MAGNIEN, Thierry thierry.magnien at
Thu Jan 29 17:46:54 CET 2015


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.


-------- Message d'origine --------
De : Max Clark
Date :29/01/2015 17:40 (GMT+01:00)
A : varnish-misc at
Objet : GeoIP Detection and Country Specific Content


We have been working to enable region specific content for our web site. The basic mechanism is already in place, specifically:

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.

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.

Here's the problem:

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.

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.

Without turning off caching for cookieless requests - how do we resolve this?

Thanks in advance,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the varnish-misc mailing list