Estou usando o pacote nginx padrão no servidor Ubuntu 14.04. Ele está usando /etc/nginx/nginx.conf
como configuração principal e inclui configurações de /etc/nginx/conf.d/*.conf
e /etc/nginx/sites-enabled/*
.
A configuração padrão do nginx possui essa diretiva para efetuar logon no log de acesso
access_log /var/log/nginx/access.log;
Eu gostaria de adicionar o cabeçalho X-Forwarded-For, então faço isso dentro da conf.d
pasta:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
O problema que tenho é que estou recebendo dois registros dentro do meu arquivo access.log - um com as informações do cabeçalho e outro sem.
Sei que posso substituir o nginx.conf
arquivo em si, mas prefiro evitá-lo, se possível. Eu também gostaria de continuar usando o mesmo arquivo de log ( access.log
).
Existe uma maneira de dizer ao nginx para substituir a diretiva anterior e simplesmente alterar o formato do log sem modificar o nginx.conf
arquivo principal ?
fonte
Respostas:
a resposta para sua pergunta é NÃO, você não pode substituir um formato de log em nenhum nível no nginx e você não pode substituir o access_log quando estiver no mesmo nível, exceto desativando-o. No entanto, você pode conseguir o que queria sem alterar o nginx.conf, mas precisará fazê-lo no nível do servidor {}.
O problema aqui é que a inclusão de conf.d / * está dentro do http {}, que é exatamente onde está a diretiva access_log. O que você pode fazer sem tocar no nginx.conf é alterar o servidor {} que você estiver usando (se você não configurou um, está usando o servidor padrão localizado em / etc / nginx / sites-enabled / default). Portanto, para conseguir o mesmo sem alterar o nginx.conf, você deve alterar seu arquivo na pasta conf.d para:
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log off;
E então dentro do seu servidor {} coloque:
access_log /var/log/nginx/access.log main;
Isso deve te dar o que você queria no começo.
fonte
main
existe um log_format, para que você precise escolher outro nome.