nginx evita cache para proxy / fast_cgi na resposta 5xx

1

Eu tenho nginx com backend nodejs / php-fpm backend como dizer ao nginx não armazenar em cache a resposta 5xx ou 4xx, mesmo que seja compatível com os parâmetros de cache.

Resposta do cabeçalho PHP / Node.js por um longo tempo de cache via cabeçalhos http:

HTTP/1.1 500 Internal Server Error
Date: Thu, 09 Mar 2017 09:41:03 GMT
Pragma: public
Expires: Thu, 09 Mar 2018 09:41:03 GMT
Cache-Control: public, max-age=31536000
X-Accel-Expires: Thu, 09 Mar 2018 09:41:03 GMT

A resposta armazenará em cache até mesmo o código de status é 500 como evitá-lo?

configuração nginx:

  location / {
    proxy_cache_methods GET;
    proxy_cache_key $request_uri;
    proxy_cache cache;
    proxy_cache_valid 200 1h;
    proxy_cache_use_stale error timeout invalid_header updating;
    proxy_cache_bypass 0;
    proxy_no_cache 0;
    proxy_redirect off;
    proxy_pass http://node-app;
  }
    
por sweb 09.03.2017 / 10:45

1 resposta

1

Por padrão, o nginx honrará o Cache-Control recebido do back-end por seu próprio cache de proxy. link

Assim, parece que a melhor solução seria alterar o back-end para parar de emitir esses cabeçalhos em caso de erros.

Se você realmente deseja substituir os 500s no nginx, talvez use proxy_cache_valid com 500 e 0 como os parâmetros? Isso definitivamente significa adivinhar o backend, então pode ter consequências não intencionais de qualquer forma.

    
por 06.02.2018 / 14:56