HTTP_X_FORWARDED_FOR, HTTP_VIA and REMOTE_ADDR Explained

  • Avinash
  • 7
  • Aug 22, 2011
  • Tutorial

These PHP server variables provide the IP address information in different ways based on the condition how the website is accessed. So basically these variables used to track the user’s location.
You can get these information with the help of below three server variables.

  • REMOTE_ADDR
  • HTTP_VIA
  • HTTP_X_FORWARDED_FOR


When any user visit your site without any proxy server in that case you can get the IP address using REMOTE_ADDR server variable. So in that case HTTP_X_FORWARDED_FOR and HTTP_VIA will not be available.

Note: HTTP_VIA and HTTP_X_FORWARDED_FOR will be only populated if web server detects the use of the Proxy Server.

Now for understanding the HTTP_VIA and HTTP_X_FORWARDED_FOR check the below scenario:

Suppose any user from India visits my site from the proxy server of the USA. Below I have listed the user’s flow with dummy IP addresses.

User( India 1.25.32.51 ) >> Proxy (USA 54.58.210.255) >> http://www.xpertdeveloper.com

AS per above scenario REMOTE_ADDRESS will populated with 54.58.210.255, HTTP_VIA will populated with 54.58.210.255 and HTTP_X_FORWARDED_FOR will populated with 1.25.32.51

So if any user visits your site with the proxy server then REMOTE_ADDRESS is the IP address of the machine which is actually making the request to your website, HTTP_VIA is the IP address of the proxy server and HTTP_X_FORWARDED_FOR is the IP address of the actual user who uses the proxy server.

Note: If request is made through proxy server the REMOTE_ADDR will be same as HTTP_VIA.

Related Posts

Written by Avinash

Avinash Zala is leading various projects which deals with the various technology involved with the web. A combination of perfect technical and management skills. Avinash would like to chat with you and convert your imagination into the working system. You can get in touch with him on Facebook and Twitter.

View all posts by:

  • Andrei

    Very interesting your post!

    • http://www.xpertdeveloper.com Avinash

      Thanks Andrei !!!!!!

  • http://www.dz-tchat.com megainfo

    NIce!! thanks

  • http://www.reazul.net Reazul

    Nice and very helpful post. It solved my confusion. Thanks.

  • http://www.tvarkarastis.lt tvarkarastis

    thanx good article, playing with proxies at the moment and your article helped me

  • http://droidvpn.com/ Android VPN

    Just additional information the HTTP_VIA variable do not just display the proxy server’s IP address. It normally shows what proxy software is being used, including it’s version number.

    Example: eg: HTTP_VIA: HTTP/1.1 255-255-255-255.HINET-IP.hinet.net (Squid/1.3.28)</code?

    In this sample the proxy domain and port are displayed, it also display the proxy software and version used.

  • Justin jacob

    i had a website to check the IP address and proxy ,and the site is in https ,in https http_via is not working and in http its working ,how to show http_via in https environment