Converter a configuração do apache em equivalente nginx para logs

2

Eu tenho este log personalizado no apache

 SetEnvIFNoCase User-agent "ELB-HealthChecker/2.0" skiplog
 LogFormat "%t \"%r\" %>s %O | client:%a | Local:%A | Host:%v | %H | %m | %P(pid) | TimeTaken:%T | %q |DataReceived:%I-Sent:%O-Total:%S | %l | %u | \"%{Referer}i\" \"%{User-Agent}i\"" mylog
 LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined_mylog
 CustomLog /var/log/apache2/access.log mylog env=!skiplog
 CustomLog /var/log/apache2/access_org.log combined_mylog env=!skiplog

Basicamente eu quero pular o log se o agente do usuário for "ELB-HealthChecker/2.0"

Agora eu mudei para o nginx e não sei como usá-lo lá

    
por Master 30.10.2018 / 02:17

1 resposta

2

A diretiva nginx access_log aceita um parâmetro if , o que faz com que ele registre apenas se a condição especificada não for falsa ou uma string vazia.

Assim, você pode definir uma variável e, no caso em que esse agente do usuário aparecer, defina a variável como 0. Você pode fazer isso com mais facilidade em um map :

map $http_user_agent $loggable {
    default                 1;
    ELB-HealthChecker/2.0   0;
}

Em seguida, você pode modificar access_log para verificar a variável:

    access_log /var/log/nginx/whatever-access.log log_format_name if=$loggable;
    
por 30.10.2018 / 03:15