Modificando o LogFormat no Apache

2

Eu preciso modificar o LogFormat no Apache para adicionar o cabeçalho X-Forwarded-For e os IPs reais dos clientes de log. Eu tentei editar isso no arquivo link , mas depois encontrei duas partes separadas para o LogFormat. Então, não tenho certeza se eles são duplicados, se devo remover algum deles ou não, e não sei qual deles editar ou devo editá-los todos. Eu preciso de alguns conselhos para isso.

Aqui está a primeira parte:

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    CustomLog "logs/access_log" common

    <IfModule logio_module>
        LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

    </IfModule>

</IfModule>

A segunda parte:

<IfModule mod_log_config.c>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    LogFormat "%{Referer}i -> %U" referer
    LogFormat "%{User-agent}i" agent

    CustomLog logs/access_log common

</IfModule>

Eu não sei qual é a diferença entre a primeira e a segunda parte. Eu posso ver duas linhas são duplicadas nas duas partes. Então, qual parte devo editar? É seguro remover as linhas duplicadas de uma parte e manter a outra? Posso combinar linhas não duplicadas em uma parte? Obrigado.

    
por Mina Hafzalla 23.04.2015 / 16:36

3 respostas

0

De acordo com os documentos do apache , ambas as seções são equivalentes:

Description:    Logging of the requests made to the server
Status: Base
Module Identifier:  log_config_module
Source File:    mod_log_config.c

Remova (ou comente) o que você não sente que vai usar, caso contrário você terá todo tipo de dor de cabeça mais tarde, se por algum motivo você mudar de ordem (portanto prioridade).

    
por 23.04.2015 / 17:00
0

A diretiva IfModule é para levar a configuração somente se o módulo foi carregado, você pode verificar quais módulos você tem com httpd -M -f arquivo de configuração, como:

[root@apachesrv bin]# httpd -M -f conf/httpd-vserver.conf
Loaded Modules:
 core_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 log_config_module (shared)
 authz_host_module (shared)
 setenvif_module (shared)
 mime_module (shared)
 dir_module (shared)
 alias_module (shared)
 cache_module (shared)
 disk_cache_module (shared)
 headers_module (shared)
 deflate_module (shared)
 rewrite_module (shared)
 proxy_module (shared)
 proxy_http_module (shared)
 schema_module (shared)
Syntax OK

Neste caso, você pode ver que eu estou usando o log_config_module, então será necessário (no meu caso) a configuração

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    CustomLog "logs/access_log" common

    <IfModule logio_module>
        LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

    </IfModule>

</IfModule>

Para capturar as informações necessárias, você precisa configurar um registro com algo como:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{X-Forwarded-For}i\"" combinedcustomized

Em seguida, altere seu log de acesso para:

CustomLog logs/access.log combinedcustomized

EDITAR:

No documento do apache, você tem a lista de parâmetros disponíveis para registrar o link

    
por 23.04.2015 / 18:51
0

No meu centos 7.4 eu só tenho o

<IfModule log_config_module>

diretiva no httpd.conf e o log_config_module é carregado através do arquivo de configuração /etc/httpd/conf.modules.d/00-base.conf

Eu só alterei esta linha para que funcione. (mas você vai mudar o formato do log por causa de uma nova linha para o ip do cliente)

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

Existe uma maneira mais "elegante" de fazê-lo (substituindo o ip do proxy pelo ip do cliente se o campo x-forwarded-for estiver presente), mas não consigo fazê-lo funcionar (somente o proxy ip é mostrado)

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combied
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
CustomLog "logs/access_log" combined env=!forwarded
CustomLog "logs/access_log" proxy env=forwarded
    
por 07.12.2018 / 12:51