This article describes an issue when using the built-in (Geographic Location) criteria. The editor can see the personalized content in edit mode but not after logged out/when clicking on view on website.
Make sure GeocityLite database is available in App_Data.
Check in the IIS logs to see where's the real client IP come from e.g firewall, load balancer, proxy server etc...?
If the site is deployed in a load balanced environment, you will get the load balancer's IP, which is the default setting for most of them. Check out X-Forwarded-For in order to get the real IP (https://en.wikipedia.org/wiki/X-Forwarded-For) or check these tech notes to see if it helps: https://web.archive.org/web/20150411034633/http://www.creuna.se/blogg/geolocation-in-a-load-balanced-episerver-site/
In the website deployed in Azure, try adding the following setting to Web.config file
<add key="episerver:ClientIPAddressHeader" value="OriginalIP" />
See more at: http://world.episerver.com/documentation/Items/Developers-Guide/Episerver-CMS/9/Deployment/content-delivery-network-cdn-configuration/