Log de apache con soporte para obtener las ip vía proxys
A continuación se muestran las líneas que deberían añadirse al archivo de configuración de apache para capturar correctamente las direcciones IP de las visitas de un web, independientemente de si acceden directamente o a través de un proxy como el de telefónica.
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined LogFormat "%{Client-ip}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" proxy:%h" proxy SetEnvIf Client-ip . client-ip-request CustomLog /var/log/apache/access.log combined env=!client-ip-request CustomLog /var/log/apache/access.log proxy env=client-ip-request |
Las dos primeras líneas sirven para definir dos formatos de log diferentes, el combined y el proxy. El combined es el formato habitual, y el proxy lo que hace es obtener la dirección real del cliente, y poner la del proxy al final.
Con la tercera línea definimos una variable de entorno que nos indica si la visita accede directamente o a través de un proxy. Con las últimas dos líneas indicamos que formato de entrada de log utilizar en función de la variable establecida, así como la ubicación del log sobre el que se escribe, que debe ser el mismo en ambos casos.
De esta forma hemos conseguido registrar todas las visitas en el log access_log y disponer de la dirección ip real de cada visita, de forma que este log podríamos analizarlo con herramientas como Urchin.
A partir de este punto podemos aplicar esta técnica a servidores con múltiples webs alojados, para lo cual sería suficiente únicamente con tomar las dos últimas líneas y aplicárselas a cada web.
Referencias:
Creo que wordpress eliminó las diagonales que originalmente deben escapar ciertas comillas…
Así quedaría ya escapado:
LogFormat «%h %l %u %t \»%r\» %>s %b \»%{Referer}i\» \»%{User-Agent}i\»» combined
LogFormat «%{Client-ip}i %l %u %t \»%r\» %>s %b \»%{Referer}i\» \»%{User-Agent}i\» proxy:%h» proxy
Saludos