User Tools

Site Tools


apache:get_the_originating_host_ip

Apache - Get the originating host ip

By default logs contain the IP of the proxy if the client use a proxy. This is a problem:

For instance, with statistics (like with awstats) some proxy use multiple IPs (For example AOL) in the same visit. Multiples visits could be seen as a unique one.

WARNING: There is a solution which replaces the client IP used everywhere in Apache with the X-Forwarded-For value if it exists. But this solution is to use just with trusted proxy, else it would be a security hole. X-Forwarded-For is a header field and then can be forged, don't use it for legal or security reason.

Define two logformat, one with the host IP (%h), one with the value of X-Forwarded-For:

LogFormat "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"" combined_forwarded

Define an environment variable if a proxy is used:

# Log the originating ip if use a proxy
SetEnvIfNoCase X-Forwarded-For "." from_proxy=1

Use different log depending on “from_proxy”

CustomLog /var/log/apache2/somesite.org-access.log combined env=!from_proxy
CustomLog /var/log/apache2/somesite.org-access.log combined_forwarded env=from_proxy

Reload Apache.

apache/get_the_originating_host_ip.txt · Last modified: 2020/07/15 10:30 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki