Use nginx como proxy de cache sem obter acesso condicional do cliente

2

Eu gostaria que o Nginx fosse configurado como um proxy reverso com o cache na frente de outro servidor da web (servidor de origem). Eu entendo como fazer isso.

Mas e se eu não quiser depender do navegador para enviar uma condicional HTTP para aproveitar o cache? Em vez disso, quero que o Nginx faça uma condicional HTTP chegar ao servidor de origem. Se o Nginx tiver conteúdo obsoleto, ele atualizará seu cache com uma nova cópia do servidor de origem.

O fluxo seria assim:

  1. O navegador (ou outro cliente sem navegador) envia uma solicitação HTTP GET para o Nginx. (Nenhum cabeçalho de obtenção condicional).
  2. O Nginx envia o HTTP GET para o conteúdo solicitado ao servidor de origem INCLUINDO um cabeçalho get condicional (por exemplo, "If-Modified-Since").
  3. Se o conteúdo tiver sido modificado, o servidor de origem responderá com HTTP 200 e o conteúdo que o Nginx usa para atualizar seu cache. Caso contrário, ele responde com HTTP 304 "não modificado" e o Nginx não atualiza seu cache.
  4. O Nginx responde com o HTTP 200 e o conteúdo solicitado para o navegador.

O raciocínio é reduzir a carga no servidor de origem para solicitações HTTP do navegador que não usa um get condicional.

    
por Erik Hermansen 01.03.2014 / 01:16

1 resposta

3

O nginx adicionou isso como um novo recurso na versão de desenvolvimento 1.5.7.

Adicione proxy_cache_revalidate on; à configuração do cache proxy e o nginx revalidará o conteúdo obsoleto com If-Modified-Since .

    
por 01.03.2014 / 01:24