Come evitare l'URL con fastcgi_cache?


1

Come evitare l'URL con fastcgi_cache?
non è necessario l'elenco di cache ad es

projectdomain.com/a
projectdomain.com/b
projectdomain.com/c/d

vi /etc/nginx/nginx.conf

http {
  fastcgi_cache_path /var/cache/fastcgi/projectdomain.com levels=1:2 keys_zone=projectdomain.com:10m inactive=5m;
  add_header X-Fastcgi-Cache $upstream_cache_status;

  ...

vi /etc/nginx/conf.d/default.conf

map $request_uri $dont_cache_uri {
    default 0;
    projectdomain.com/a      1;
    projectdomain.com/b      1;
    projectdomain.com/c/d    1;
}


server {
  listen 80;
  server_name projectdomain.com www.projectdomain.com;
  access_log /var/log/nginx/projectdomain.com.access.log;
  root /var/www/html/projectdomain.com;
  index index.php index.html index.htm;
  try_files $uri $uri/ /index.php?$query_string;
  client_max_body_size 1G;

  location ~ ^/sitemap/(.*)$ {
    root /var/www/html/projectdomain.com/app/Sitemap/SitemapGz;
  }
  location /robots.txt {
    alias /var/www/html/projectdomain.com/app/robots.txt;
  }
  location ~ ^/(android-chrome-36x36.png|android-chrome-48x48.png|android-chrome-72x72.png|android-chrome-96x96.png|android-chrome-144x144.png|android-chrome-192x192.png|apple-touch-icon-57x57.png|apple-touch-icon-60x60.png|apple-touch-icon-72x72.png|apple-touch-icon-76x76.png|apple-touch-icon-114x114.png|apple-touch-icon-120x120.png|apple-touch-icon-144x144.png|apple-touch-icon-152x152.png|apple-touch-icon-180x180.png|apple-touch-icon-precomposed.png|apple-touch-icon.png|browserconfig.xml|favicon-16x16.png|favicon-32x32.png|favicon-96x96.png|favicon.ico|manifest.json|mstile-70x70.png|mstile-144x144.png|mstile-150x150.png|mstile-310x150.png|mstile-310x310.png|safari-pinned-tab.svg) {
    root /var/www/html/projectdomain.com/app/favicons;
  }
  location ~ ^/(images/|javascripts/|stylesheets/|fonts) {
    root /var/www/html/projectdomain.com/app/assets;
    access_log off;
    expires max;
  }

  location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;

    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 32k;
    fastcgi_buffers 8 32k;

    # cache
    fastcgi_cache projectdomain.com;
    fastcgi_cache_valid 200 60m;
    fastcgi_cache_methods GET HEAD;
    fastcgi_cache_key $scheme$request_method$host$request_uri;
    fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

    fastcgi_cache_bypass $dont_cache_uri;
    fastcgi_no_cache $dont_cache_uri;
  }
}

Risposte:


1

Per evitare la memorizzazione nella cache di una richiesta, è necessario utilizzare fastcgi_no_cachee fastcgi_cache_bypassinsieme. Il primo dice a nginx di non memorizzare nella cache una risposta, e il secondo dice a nginx di non provare a trovare il documento nella cache.

Ad esempio, per evitare la memorizzazione nella cache di qualsiasi richiesta con una stringa di query:

fastcgi_cache_bypass $is_args;
fastcgi_no_cache $is_args;

Per evitare la memorizzazione nella cache di una richiesta con un cookie denominato "logg_in_user":

fastcgi_cache_bypass $cookie_logged_in_user;
fastcgi_no_cache $cookie_logged_in_user;

Per evitare la memorizzazione nella cache di percorsi specifici, tuttavia, è necessario combinare questo con un map, che elenca gli URL che non si desidera memorizzare nella cache. Nota che mapdeve apparire all'esterno di ogni serverblocco e all'interno del httpblocco.

map $request_uri $dont_cache_uri {
    default 0;
    /a      1;
    /b      1;
    /c/d    1;
}

Quindi puoi evitare di memorizzare nella cache tutto quanto sopra.

fastcgi_cache_bypass $is_args $cookie_logged_in_user $dont_cache_uri;
fastcgi_no_cache $is_args $cookie_logged_in_user $dont_cache_uri;

Grazie per la risposta! Aggiornamento il codice nella mia domanda, mi manca qualcosa? e cosa c'è defaultnel blocco della mappa e cosa 0, 1significa?
user1575921

1
@ user1575921 Le direttive fastcgi vanno con tutto il resto. Per il resto, dovresti leggere la documentazione che è collegata in blu.
Michael Hampton
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.