GNU/Linux >> LINUX-Kenntnisse >  >> Linux

nginx als Cache-Proxy speichert nichts

Stellen Sie sicher, dass Ihr Backend nicht Set-Cookie zurückgibt Header. Wenn Nginx es sieht, deaktiviert es das Caching.

Wenn dies der Fall ist, ist die beste Option, Ihr Backend zu reparieren. Wenn das Reparieren des Backends keine Option ist, ist es möglich, Nginx anzuweisen, Set-Cookie zu ignorieren Kopfzeile

proxy_ignore_headers "Set-Cookie";
proxy_hide_header "Set-Cookie";

Siehe Dokumentation

proxy_ignore_header stellt sicher, dass das Caching stattfindet. proxy_hide_header stellt sicher, dass die Cookie-Nutzlast nicht in der zwischengespeicherten Nutzlast enthalten ist. Dies ist wichtig, um zu vermeiden, dass Cookies über den NGINX-Cache verloren gehen.


Ich möchte hinzufügen, dass mehrere Konfigurationsoptionen und -kombinationen das Proxy-Caching in Nginx deaktivieren können. Leider ist dies schlecht dokumentiert.

In meiner Konfiguration habe ich proxy_buffering on eingestellt und es hat das Caching wie erwartet aktiviert.


Nachdem ich mehrere Antworten und Kommentare durchgegangen war, fand ich, dass diese Konfiguration endlich funktioniert:

10m =10mb Schlüsselcache, max_size bis 2GB , inactive=120m (Aktualisierung von der Quelle nach 120 Minuten Inaktivität), use_temp_path=off (um io zu reduzieren)

proxy_cache_valid - Cache-Status von 200 und 302 für 60 Minuten

proxy_cache_path /tmp/cache levels=1:2 keys_zone=default_cache:10m max_size=2g
                 inactive=120m use_temp_path=off;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_valid 200 302 60m;

server {
    listen       80;
    server_name  example.com;

    # https://www.nginx.com/blog/nginx-caching-guide
    location / {
        proxy_cache default_cache;
        proxy_buffering on;
        proxy_ignore_headers Expires;
        proxy_ignore_headers X-Accel-Expires;
        proxy_ignore_headers Cache-Control;
        proxy_ignore_headers Set-Cookie;

        proxy_hide_header X-Accel-Expires;
        proxy_hide_header Expires;
        proxy_hide_header Cache-Control;
        proxy_hide_header Pragma;

        add_header X-Proxy-Cache $upstream_cache_status;
        proxy_pass http://ip-of-host:80;

        #set            $memcached_key "$uri?$args";
        #memcached_pass 127.0.0.1:11211;
        # error_page     404 502 504 = @fallback;
    }
}

Linux
  1. Verbessern Sie das Cachen von MySQL-Datenbanken

  2. Reverse Proxy mit Nginx:Eine Schritt-für-Schritt-Anleitung zur Einrichtung

  3. „Schwanz -f | Iconv -fsjis“ gibt nichts aus?

  4. Wie konfiguriere ich Redis Caching, um WordPress unter Ubuntu 18.04 zu beschleunigen?

  5. Zwingen Sie dd, nicht zu cachen oder nicht aus dem Cache zu lesen

So richten Sie Nginx Reverse Proxy ein

NGINX als Reverse Proxy für Node- oder Angular-Anwendungen

So installieren Sie Varnish Cache unter CentOS 7

So richten Sie Nginx Cache auf einem LAMP-Server ein

So richten Sie den Nginx-Cache auf dem LEMP-Server ein

So aktivieren Sie serverseitiges FastCGI-Caching mit Nginx und PHP