os logs de acesso nginx ignoram certas solicitações

7

Estou executando o nginx atrás do haproxy (rodando no mesmo servidor). Eu configurei o haproxy para usar um simples arquivo html no nginx para verificar se o serviço está ativo, já que não tenho / quero um URL "/" válido neste host. O Nginx não suporta o tipo de pedido OPTIONS (tanto quanto eu sei) que é o padrão que o haproxy usa, então eu mudei para GET.

Como tenho registros de acesso ativados no nginx, estou recebendo todas essas solicitações de pesquisa de tempo de atividade no meu log de acesso. Existe uma maneira que eu possa configurar o nginx para ignorar determinadas solicitações e pular o registro?

Aqui está o backend do haproxy:

backend static_http
        option  httpchk GET /test.html
        option  redispatch
        balance roundrobin
        #fullconn 1000
        server  w1_static www1:81 check port 81 inter 2000

E aqui está o que eu vejo nos registros nginx:

127.0.0.1 - - [24/Jul/2009:19:28:22 +0000] "GET /test.html HTTP/1.0" 200 12 "-" "-"
127.0.0.1 - - [24/Jul/2009:19:28:24 +0000] "GET /test.html HTTP/1.0" 200 12 "-" "-"
127.0.0.1 - - [24/Jul/2009:19:28:26 +0000] "GET /test.html HTTP/1.0" 200 12 "-" "-"
127.0.0.1 - - [24/Jul/2009:19:28:28 +0000] "GET /test.html HTTP/1.0" 200 12 "-" "-"
127.0.0.1 - - [24/Jul/2009:19:28:30 +0000] "GET /test.html HTTP/1.0" 200 12 "-" "-"
    
por Michael Marano 24.07.2009 / 21:29

3 respostas

8

Agora você pode fazer isso

link

The if parameter (1.7.0) enables conditional logging. A request will not be logged if the condition evaluates to “0” or an empty string

map $request_uri $loggable {
  / 0;
  /healthcheck.html 0;
  default 1;
}

server {
...
  access_log /var/log/nginx/access.log combined if=$loggable;

}
    
por 30.04.2015 / 00:50
7

Bem, você pode tentar ter uma diretiva de local específica para isso.

Algo como

location /test.html {
  access_log off;
}

deve funcionar (não testado) ...

    
por 26.07.2009 / 09:09
0

Não há filtragem integrada que fará o que você deseja.

Existem alguns truques que você pode tentar. Tudo isso resultará nos dados que você não está interessado em registrar em um arquivo diferente, que você pode usar externamente (lembre-se do HUP nginx depois) quantas vezes achar necessário.

  • se haproxy é a única coisa que solicita /test.html, você pode ter um log de acesso diferente por bloco de localização (infelizmente não para um bloco if dentro de um bloco de localização).

  • se outros nós solicitarem /test.html, mas todas as solicitações de 127.0.0.1 forem haproxy, você poderá criar um mapa baseado em $ remote_addr que traduz 127.0.0.1 para access_log.junk e todo o restante para access_log. Use a variável map no nome da declaração do log de acesso

Caso contrário, você tem a fonte, então corte o que você precisa.

    
por 25.07.2009 / 00:35