Fix – WordPress Showing Localhost IP(127.0.0.1) for Comment Author Instead of Real


So, you are using Varnish? Cool! That’s why you are unable to see real IP of your visitors. No worries, here’s the complete solution.

To fix this problem,

  1. Login to FTP/SFTP
  2. Go to public_html folder
  3. Edit wp-config.php
  4. Add below code just before /* That’s all, stop editing! Happy blogging. */
  5. Save Changes.
/** Required Code for showing correct IP address */
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
$xffaddrs = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']); 
$_SERVER['REMOTE_ADDR'] = $xffaddrs[0]; 
}

Mark: This little problem I had faced on Cloudways web hosting.

Alternative case

Similarly, if your IP is showing incorrect after using Cloudflare, here’s the fix –

/** Correct IP in case of Cloudflare **/
if(array_key_exists('HTTP_CF_CONNECTING_IP', $_SERVER)){ 
 $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; 
}

Alternatively, if you have LEMP stack with root access, then add below rule under Server Block. You can find your configuration file at /etc/nginx/sites-available/ directory.

server {
root /var/www/html;
index index.php index.html index.htm;
server_name .example.com;
# Get real IP
set_real_ip_from 0.0.0.0/0;
set_real_ip_from ::/0;
real_ip_header X-Forwarded-For;
...

In case, if you don’t feel comfort in editing wp-config.php file, add above snippet using Code Snippets plugin. It will work fine. I hope this guide helps in the right direction. Thanks

Any question? Please ask at Gulshan Forum.

Comments are closed.