GNU/Linux >> Linux Esercitazione >  >> Linux

nginx come cache proxy non memorizza nella cache nulla

Assicurati che il tuo backend non restituisca Set-Cookie intestazione. Se Nginx lo vede, disabilita la memorizzazione nella cache.

Se questo è il tuo caso, l'opzione migliore è riparare il tuo backend. Quando la correzione del backend non è un'opzione, è possibile istruire Nginx in modo che ignori Set-Cookie intestazione

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

Consulta la documentazione

proxy_ignore_header assicurerà che la memorizzazione nella cache abbia luogo. proxy_hide_header assicurerà che il payload del cookie non sia incluso nel payload memorizzato nella cache. Questo è importante per evitare la perdita di cookie tramite la cache NGINX.


Vorrei aggiungere che più opzioni e combinazioni di configurazione possono disabilitare la memorizzazione nella cache del proxy in Nginx. Purtroppo questo è scarsamente documentato.

Nella mia configurazione ho impostato proxy_buffering on e ha abilitato la memorizzazione nella cache come previsto.


dopo aver esaminato più risposte e commenti, ho scoperto che questa configurazione finalmente funziona:

10m =10mb cache delle chiavi, max_size a 2GB , inactive=120m (aggiornamento dalla fonte dopo 120 minuti di inattività), use_temp_path=off (per ridurre io)

proxy_cache_valid - stato della cache di 200 e 302 per 60 minuti

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. Migliora la memorizzazione nella cache del database MySQL

  2. Come configurare un proxy inverso Nginx

  3. nginx - 413 Entità richiesta troppo grande

  4. Proxy inverso con Nginx:una guida all'installazione passo passo

  5. Linux:modpost non compila nulla

Come impostare il proxy inverso Nginx

NGINX come proxy inverso per applicazioni Node o Angular

Come installare Varnish Cache su CentOS 7

Come configurare la cache Nginx su un server LAMP

Come configurare la cache Nginx sul server LEMP

Come abilitare la memorizzazione nella cache FastCGI lato server con Nginx e PHP