Nginx: Como faço para replicar o arquivo other_vhosts_access.log do Apache para obter o vhost no início da linha de log?

2

Eu tenho vários sites hospedados em um servidor executando o Nginx. Eu não quero usar arquivos de log separados para todos os meus vhosts, mas eu quero ser capaz de dizer a partir dos logs que Nginx vhost cada solicitação pertencia. Isso não é possível com o formato "combinado" padrão do NCSA usado por /var/log/nginx/access.log.

O Apache sob o Debian / Ubuntu registra em log /var/log/apache2/other_vhosts_access.log por padrão, o que inclui o nome do vhost. Como faço para replicar isso para o Nginx?

    
por Alastair Irvine 24.10.2016 / 12:36

1 resposta

2

Salve o seguinte snippet como /etc/nginx/other-vhosts-access-log.conf e recarregue o Nginx. Isto irá iniciar o registro em /var/log/nginx/other_vhosts_access.log. (Isso não deixará de ser registrado em /var/log/nginx/access.log.) O formato é o mesmo (formato NCSA "combinado"), mas com o valor de server_name no início de a linha. Observe que o nome do vhost é usado, o que não é necessariamente o mesmo que o nome do host solicitado (se houver mais server_name diretivas para aliases).

# borrowed from Apache
# (Could use $host instead of $server_name to log vhost aliases separately)
log_format vhost_combined '$server_name $remote_addr - $remote_user [$time_local] '
                          '"$request" $status $body_bytes_sent '
                          '"$http_referer" "$http_user_agent"';

# Define an access log for VirtualHosts that don't define their own logfile
access_log /var/log/nginx/other_vhosts_access.log vhost_combined

(Cuidado com a rotação de logs, mas isso deve ser coberto para todos os arquivos em / var / log / nginx pelo arquivo logrotate do pacote nginx-full .)

Aviso : não tente desativar o registro em log em /var/log/nginx/access.log usando access_log off; antes acima, pois isso evitará que as instruções access_log subseqüentes funcionem.

    
por 24.10.2016 / 12:36