Nginx redireciona redirecionamentos de cache 301 (permanentes)

7

É possível ter todas as solicitações de redirecionamento 301 do cache Nginx para proxy_pass ?

Por exemplo:

Solicitação nº 1: solicitações do cliente A / algumas / caminho - > enviado para proxy_pass - > resulta em redirecionamento 301 para /some/other/path - > O nginx armazena essa resposta em cache, já que é um redirecionamento 301.

Solicitação nº 2: solicitações do cliente B / algum / caminho - > nginx retorna o redirecionamento 301 em cache para /some/other/path .

    
por Kendall Hopkins 06.09.2012 / 02:09

3 respostas

4

Descobri que a resposta de @ Michael me ajudou muito, mas quando eu ativei proxy_cache , ela armazenava automaticamente os arquivos em cache com Expires e Cache-Control . Então acabei com essa solução.

proxy_cache_path /tmp/nginx levels=1:2 keys_zone=main-cache:8m max_size=1000m inactive=600m;
proxy_temp_path /tmp/nginx/tmp;
proxy_cache main-cache;
proxy_cache_valid 301 60m;
proxy_cache_key "$scheme://$host$request_uri";
proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
    
por 09.09.2012 / 19:02
8

O nginx já pode fazer cache de redirecionamentos 301. Você pode alterar a quantidade de tempo em cache com a diretiva proxy_cache_valid :

proxy_cache_valid 301 365d; # Cache permanent redirects for a whole year
    
por 08.09.2012 / 17:26
-1

Se você quiser redirecionar tudo, poderá usar desta maneira:

location / {
  proxy_pass http://127.0.0.1:8080/VirtualHostBase/https/$server_name:443/some/path/VirtualHostRoot;
}

Seus exemplos podem precisar da combinação de rewrite e proxy_pass :

location / {
  rewrite ^(.*)$ /VirtualHostBase/https/$server_name:443/some/path/VirtualHostRoot$1 break;
  proxy_pass http://127.0.0.1:8080;
}

Atenção : você tem que reescrever diferente redirect efeito: break retorna 301 em vez permanent retorna 302.

EDITAR Upstream este módulo / s você precisa usar proxy_cache_valid diretive:

proxy_cache_valid  301 1h;

Atenção , as diretivas relacionadas a cache upstream têm prioridade sobre o valor proxy_cache_valid, em particular a ordem é:

  1. X-Accel-expira
  2. Expires / Cache-Control
  3. proxy_cache_valid

Referência: HttpProxyModule , proxy reverso Nginx + reescrita de URL

    
por 08.09.2012 / 17:20