Como verificar a linha de cabeçalho do cookie e o cache personalizado no Nginx

2

Eu estou tentando cache para o meu site usar o módulo Proxy Nginx e tem os seguintes requisitos:

Se a solicitação tiver um cookie (no cabeçalho da solicitação)

  • A resposta usará o cache de Nginx
  • Ocultar linha de cabeçalho do conjunto de cookies

Se a solicitação não tiver cookie (no cabeçalho da solicitação)

  • Enviar pedido para backend
  • Não esconda a linha de cabeçalho Set-Cookie

Eu uso o If (do módulo reescrito) e qualquer diretiva:

if (!-e $http_cookie) 
{
  set $not_cache_rq 0;
  set $not_cache_rp 0;
}
if ($http_cookie) {
  set $not_cache_rq 1;
  set $not_cache_rp 1;
}
proxy_cache_bypass $not_cache_rq;
proxy_no_cache $not_cache_rp;
proxy_hide_header  Set-Cookie;

Eu não sei como chamar a opção cookie proxy_hide_header quando houver cookie e nenhum cookie na linha de cabeçalho.

Por favor me ajude. Muito obrigado.

====

Oi poige

Eu gerencio o site de um cliente. Se os cookies estiverem definidos, todas as solicitações e respostas conterão a linha de cabeçalho Cookie.

Se uma resposta é armazenada em cache. O cache será Nginx retorna para todos os clientes e Set-Cookie header line fará com que todos os usuários compartilhem um valor de cookie (este valor é a sessão, deve ser diferente para cada usuário).

Eu quero se o usuário não tiver uma sessão (ou seja, nenhum cookie existir - a linha de cabeçalho de solicitação não terá a linha Cookie), a solicitação será enviada ao back-end (apache) para processamento e retornará o cookie para o usuário .

Se o usuário já tiver sessão (ou seja, um cookie na linha de solicitação), o Nginx retornará o cache e o cache não terá linha Set-Cookie)

Muito obrigado!

    
por user124249 11.06.2012 / 10:54

1 resposta

1

Se você definir sua proxy_cache_key para alguma string que contenha uma variável de cookie, todos os usuários com cookies diferentes terão sua própria versão em cache da página.

Como isso

  proxy_cache_key  "$host$request_uri$cookie_auth_id";

Isso permitirá o armazenamento em cache e páginas distintas para diferentes usuários.

    
por 19.12.2012 / 16:04

Tags