Nginx Reverse Cache 301 Weiterleitungen (permanent)

7

Ist es möglich, dass Nginx alle 301Umleitungsanforderungen für zwischenspeichert proxy_pass?

Zum Beispiel:

Anfrage Nr. 1: Client Eine Anfrage / some / path -> gesendet an proxy_pass-> führt zu einer 301-Umleitung an /some/other/path-> nginx speichert diese Antwort zwischen, da es sich um eine 301-Umleitung handelt.

Anforderung Nr. 2: Client B-Anforderungen / some / path -> nginx gibt die zwischengespeicherte 301-Umleitung an zurück /some/other/path.

Kendall Hopkins
quelle

Antworten:

8

nginx kann bereits 301 Weiterleitungen zwischenspeichern. Sie können die Zeitspanne, in der sie zwischengespeichert werden, mit der Anweisung proxy_cache_valid ändern :

proxy_cache_valid 301 365d; # Cache permanent redirects for a whole year
Michael Hampton
quelle
4

Ich fand, dass @ Michaels Antwort mich den größten Teil des Weges dorthin brachte, aber wenn ich mich proxy_cacheeinschaltete, wurden Dateien automatisch mit Expiresund zwischengespeichert Cache-Control. Also bin ich zu dieser Lösung gekommen.

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;
Kendall Hopkins
quelle
4
Das ist , was ein Cache tut . Nirgendwo haben Sie jemals erwähnt, dass Sie nichts anderes zwischengespeichert haben wollten.
Michael Hampton
-1

Wenn Sie alle umleiten möchten, können Sie Folgendes verwenden:

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

Ihre Beispiele könnten die Kombination von rewriteund benötigen proxy_pass:

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

Warnung : Sie haben einen anderen Umschreibeffekt redirect: breakGibt 301 statt permanent302 zurück.

BEARBEITEN Upstream dieses Moduls / dieser Module, die Sie benötigen, verwenden Sie das proxy_cache_validVerzeichnis:

proxy_cache_valid  301 1h;

Warnung : Upstream-Cache-bezogene Anweisungen haben Vorrang vor dem Wert proxy_cache_valid. Insbesondere lautet die Reihenfolge:

  1. X-Accel-läuft ab
  2. Läuft ab / Cache-Kontrolle
  3. proxy_cache_valid

Referenz: HttpProxyModule , Nginx Reverse Proxy + URL neu schreiben

Alessandra Bilardi
quelle