Como adicionar cookies recém-definidos ao log de acesso do nginx

4

Eu gostaria de incluir dados de cookies em um log de acesso ao nginx da seguinte forma:

(exemplo simplificado)

log_format foo '$remote_addr "$request" $cookie_bar';
access_log /var/log/nginx/access.log foo;

Isso funciona muito bem em solicitações que já têm uma "barra" de cookies, mas, para a primeira solicitação para o meu servidor, nginx reportará "-" como o valor de "bar".

Parece que meu problema é que o nginx está olhando os cabeçalhos de solicitação para o valor do cookie. Existe uma maneira de verificar um Set-Cookie na resposta e usá-lo como um fallback?

    
por etoleb 18.01.2011 / 01:18

2 respostas

4

Eu encontrei uma solução hacky para o meu problema, mas isso não resolve o problema em geral.

O nginx permite que você passe elementos de cabeçalho de resposta para o arquivo de log, como Set-Cookie:

log_format foo '$remote_addr "$request" '
               '$cookie_bar set_cookie=$sent_http_set_cookie';

Infelizmente, ele gera apenas o primeiro comando Set-Cookie, portanto, preciso garantir que meu servidor de aplicativos sempre configure o cookie da barra primeiro. E com um pouco de regexp, posso ter certeza de pegar o cookie definido em $sent_http_set_cookie se $cookie_bar não estiver definido.

    
por 18.01.2011 / 04:01
0

Você já pensou em usar um redirecionamento depois de definir o cookie e fazer as ações apropriadas na próxima solicitação?

    
por 18.01.2011 / 01:27