Como desabilitar o log Nginx para localhost ou certo ip?

2

Eu tenho várias seções na minha configuração Nginx, fcgi para php, upstream para determinadas URLs etc e eu quero que o arquivo nginx.log não registre nada para qualquer consulta vinda de localhost como processos internos apenas inundá-lo e, em seguida, obter processado por scripts cron.

Alguma idéia?

Eu tentei isso, é ignorar isso.

location / {
   rewrites......
   if ($host = 127.0.0.1){
     access_log off;
   }
}
    
por user73254 05.03.2011 / 23:48

1 resposta

1

Sua configuração está correta, mas o NginX tende a ser um pouco ... louco? com Ifs. Dê uma olhada na página da wiki If is Evil .

Além disso, em vez de tentar desabilitar o log nessa condição, tente redirecioná-lo para outro log, como /var/log/nginx/access_localhost.log e veja se ele ajuda (vincule-o a /dev/null se funcionar ou apenas trunque cada dia).

Lembre-se também que access_log diretives (e outras diretivas no NginX) não serão herdadas. Esta é uma citação da lista de mensagens do NginX (linkada do wiki do NginX) sobre o assunto:

There is no "global" logs in nginx, only "local" ones, either explicitly defined or inhereted from previous level.

The access_log directive, as all array-type directives in nginx config, will ignore inherited values if defined at certain level. I.e. in configuration

http { access_log log1;

server {
    server_name  server1;
}

server {
    server_name  server2;
    access_log   log2;
    ...
} }

only server1 will have logging set to log1, while server2 will have logging set to log2. If you want server2 to write log into both log1 and log2 you should say this explicitly, i.e.

server {
    server_name  server2;
    access_log   log1;
    access_log   log2;
    ...
}
    
por 06.03.2011 / 00:26

Tags