Como desativar o log do Nginx?

27

Eu tenho o seguinte no arquivo de configuração

server {
    listen       80;
    server_name  _;
    access_log  /var/log/nginx/access.log  main;
  ...

server {
    listen       80;
    server_name  example.com
    access_log  off;
    error_log off;

Mas ainda é possível registrar o example.comhost virtual. O que estou fazendo errado?

user965363
fonte
O que você pretende "principal" fazer aqui?
Evan Carroll
Sinalizei esta pergunta para remoção, porque a resposta mais votada tem a ver com seu erro de sintaxe. Não tem nada a ver com desativar o log de erros. Ele não possui mensagens de erro pesquisáveis ​​e não tenho certeza do que você está perguntando ou por que as respostas fornecidas não resolvem o seu problema.
Evan Carroll

Respostas:

31

Está faltando a ;diretiva server_name. access_loge offestão sendo tratados como server_names adicionais.

rvs
fonte
12
Além disso, error_log off; não desativa o log de erros. Ele apenas registra erros em um arquivo chamado 'off'. Não há como desativar completamente o log de erros, o mais próximo que você pode chegar é error_log / dev / null crit; que é quase a mesma coisa, já que nenhum log de erros será exibido.
kolbyjack
6
Na verdade, fazer access_log off;com que o nginx grave o log no arquivo chamado off. Portanto, essa não é a resposta certa.
user965363
4
Na verdade, esta é a resposta certa. "Usar" off "como o único parâmetro limpa todas as diretivas access_log para o nível atual": wiki.nginx.org/HttpLogModule#access_log . Não é verdade para error_log (como adicionado por @kolbyjack), mas acredito que a pergunta era sobre acesso, não log de erros. É possível que algumas versões muito antigas do nginx não suportem isso.
quer
Existe uma vantagem em usar em offvez de /dev/null? Se offfaz com que algumas versões do Nginx gravem em um arquivo chamado off, /dev/nullparece uma solução mais universal.
precisa
20

Claro que você pode desativar completamente o log. Basta apontar os arquivos de log para / dev / null e pronto. ;)

access_log  /dev/null;
error_log /dev/null;
Franz Bettag
fonte
3
Eu também uso esse; /dev/nullé um destino real; enquanto "off" é um arquivo em algum diretório
edoceo 13/12/15
4
Esta não é a maneira oficial recomendada de fazê-lo. Usar 'off' é a maneira correta.
user1751825
Eu criei / var / null e agora ele começa a salvar logs no arquivo chamado "null" no diretório var. Deve ser apenas "/ dev / null"?
Gaurav
13

você pode desativar access_logusando

access_log off;

mas se você deseja desativar o error_log, não use a opção error_log na sua conf.

Mustafa Özgür
fonte
2
Como isso está contribuindo para as respostas anteriores?
Dave M
11
Porque, a resposta anterior é inútil! Não use isso
Mustafa Özgür
2
Se a configuração não contém padrões uma opção error_log nginx para "error_log logs / error.log erro": nginx.org/en/docs/ngx_core_module.html#error_log
Julian Ladisch
Sim cara, isso mesmo. então, devemos / dev / null ou algo mais? qual a sua sugestão?
Mustafa Özgür
Esta resposta está errada, pois isso criará um arquivo de log '/ usr / share / nginx / off'
DanielKhan
1

Deve ser bem simples, você pode comentar as linhas de log

server {
    listen       80;
    server_name  _;
    #access_log  /var/log/nginx/access.log  main;
  ...

server {
    listen       80;
    server_name  example.com
    #access_log  off;
    #error_log off;

e se você receber erros de crítica, faça o seguinte: ´error_log / dev / null crit; ´ assim será:

server {
    listen       80;
    server_name  _;
    access_log  /dev/null crit;
  ...

server {
    listen       80;
    server_name  example.com
    access_log  /dev/null crit;
    error_log /dev/null crit;
Daniel Guldberg Aaes
fonte
Não use 'off'. Como mencionado abaixo, isso criará um arquivo de log chamado 'off' no diretório inicial do nginx.
DanielKhan
0

Com base no log condicional na postagem do Nginx, mas em vez de usar uma variável para determinar o log da solicitação, basta usar um valor constante de 0.

server {
listen       80;
server_name  _;
access_log  /var/log/nginx/access.log  main;
}

server {
listen       80;
server_name  example.com
access_log  /var/log/nginx/access.log if=0;
error_log /var/log/nginx/error.log if=0;
}
Aaron
fonte