Arquivo de log do Apache x-forwarded-para manipulação de CSV

0

Estou registrando x-forwarded-for com o formatador %{X-FORWARDED-FOR}i . No entanto, há momentos em que o cabeçalho X-Forwarded-For está sendo obtido em CSV (com base na configuração de um cliente):

X-Forwarded-For: 66.66.66.66, 123.123.123.123

Que aparece no arquivo de log como os IPs com CSVs acima.

Existe alguma maneira de configurar o Apache para que eu esteja registrando apenas o endereço IP mais à esquerda? É o único que eu me importo.

    
por rforte 25.10.2011 / 17:02

1 resposta

1

Sim. Você pode fazer isso usando um regex para extrair o IP mais à esquerda:

SetEnvIf X-Forwarded-For "^(\d{1,3}+\.\d{1,3}+\.\d{1,3}+\.\d{1,3}+).*" XFFCLIENTIP=$1

Observe o uso de $ 1 para definir a variável de ambiente XFFCLIENTIP para manter o conteúdo do primeiro grupo na expressão regular (entre parênteses) Então você pode definir um formato de log que usa a variável: este exemplo é um que usamos internamente em nearmap.com, então ele registra informações extras, mas o bit que você quer é o % {XFFCLIENTIP} e em o início. Observe o env = XFFCLIENTIP no final da linha, o que significa que esse formato só é usado se a variável de ambiente estiver definida.

CustomLog /var/log/apache2/access.log "%{XFFCLIENTIP}e \"%{session}C\" \"%{nearmapuid}C\" %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" env=XFFCLIENTIP
    
por 27.04.2012 / 08:51