-
-
Notifications
You must be signed in to change notification settings - Fork 38
Troubleshooting
Here is a list of common problems and how to debug them.
Add the following line to your /wp-config.php
:
define('GEOIP_DETECT_DEBUG', true);
This will enable more warnings that might be useful for debugging purposes.
This can be because of one of these 3 common problems:
- Is the detected IP of the client the real client IP? (see Q1 below)
- Do you use a page caching plugin? (see Q2 below)
- Is the data of the database provider wrong? (see Q3 below)
- Go to the backend to
Tools > Geolocation Lookup
. The IP shown atYour current IP:
is the detected IP. Click on(Not correct?)
should be the same as the one listed atReal client IP
- If these IPs match, continue at Q2 (site caching). If they do not match:
- Probably there are reverse proxies in between the website and the client, either as a software running on your server (such as nginx) or other servers as part of your hosting setup (load balancing, CDN, or similar). This needs to be configured:
- Go to
Tools > Geolocation Lookup
, click on(Not correct?)
. (You arrive at theClient IP Debug Panel
)- Is the real client IP listed in
HTTP_X_FORWARDED_FOR
? Then you need to configure your reverse proxy settings:- Copy the IP from
REMOTE_ADDR
- Go to
Settings > Geolocation IP Detection
- Enable
The server is behind a reverse proxy
- Add the IP from
REMOTE_ADDR
toIPs of trusted proxies:
(ideally you make sure it's either internal IPs or IPs that belong to the IP space of your hosting provider) - Add the other IPs from
HTTP_X_FORWARDED_FOR
that are not your real client IP - If your server supports IPv6, make sure you include both the IPv4 and IPv6 adresses of these proxies. You can try it by accessing your website via IPv4 / IPv6.
- Copy the IP from
- If that IP is nowhere else on that page, then you found a special reverse proxy that either uses a different HTTP header for the real client IP or it's not configured to pass on the client IP. Talk with your administrator about it.
- Is the real client IP listed in
- Do you use a site cache, or a HTML optimizing plugin? (Does it work when you are logged in in the Wordpress backend, and only sometimes/not at all when you are logged out. Then most certainly it is a caching mechanism.)
- Is there a CDN/reverse proxy in front of your server? The plugin tries to disable the site caching mechanism of such proxies, but it's up to them if they honor these requests or not.
- If you can, disable the caching globally to check if that's the problem.
- Use the AJAX mode instead. It is made for the use of site cache plugins.
- Enable the option
Disable caching a page that contains a shortcode or API call to geo-dependent functions.
. This option should be enabled if you use any kind of site cache ... However, some site cache plugins are ignoring this option (known not to work: WPRocket, Siteground Caching - let me know if you find more of them) - in this case, either use AJAX mode or exclude these pages manually from the site cache ("whitelisting").
Q3: How can I check if the plugin gets it wrong, or the database provider has the correct information?
While some are more precise than others (see Which data source should I choose?), no data source has 100% accuracy. There are IPs with no data at all, IPs with only country, and IPs with the wrong city (even the wrong country sometimes).
The plugin takes the data of the data sources and tries to add data (such as the timezone, flag, etc.). So normally, it does not remove data (except if I do a bad mistake), and it certainly doesn't change data to a different country/city (except if you fiddle around with the Wordpress filters of the plugin).
-
Get the raw result of what the Plugin returns:
- Check the IP under
Tools > Geolocation Lookup
. It will show all properties that the plugin provides. If you use a shortcode or the AJAX mode, still this function is what will be returned. - Do it again by ticking
Skip Cache
. If the result is different now, it had a wrong lookup result cached before. (This cache is only used for web-lookup sources such as Maxmind Precision, ipstack, etc.) - If the result is still different to what you expected, then maybe you are using a site cache (see Q2).
- Check the IP under
-
Try looking up the IP directly at the vendor:
- Hostinfo: https://hostip.info/
- Maxmind: https://www.maxmind.com/en/geoip-demo
- This is the data available in Maxmind Precision, a paid plan of Maxmind. The Lite database is less accurate.
- Ipstack: https://ipstack.com/
If they have the wrong information, contact them about it, they might correct the information in their database.
If it is correct at their site, but not correct/missing in the plugin, then write me a bug report (see Q9).
Most important:
- Which feature of the plugin is not working / should be improved?
- If you see PHP Errors/Notices, please copy them
Important context information:
- Which data source are you using?
- Which site cache plugin are you using (if any)?
- Did you try the suggested solutions above?
- Plugin Version, PHP Version?
- Any special server setup (Cloud? Docker? etc.)
Content of this documentation is available under Creative Commons Attribution-Share Alike 3.0 Unported License. Feel free to improve it by logging in with a Github user and editing it.