3 votes

Comment forcer Nginx à revalider le cache ?

J'ai un problème, j'ai un serveur avec des fichiers vidéo et nginx comme serveur cache proxy pour le bureau. En ce qui concerne la plupart des vidéos qui ne changent pas, cela fonctionne bien, mais de temps en temps, quelques vidéos changent (je veux dire qu'ils écrasent juste les fichiers sur le serveur après avoir corrigé certains bugs ou artefacts dans la vidéo), mais nginx ne peut pas le voir et sauvegarde l'ancien cache en fonction de l'état de la vidéo.

proxy_cache_valid 200 302 96h;

Existe-t-il un moyen de conserver le temps de validité du cache 96h mais de forcer nginx à revalider le cache de temps en temps depuis l'amont ?

4voto

user98677 Points 151

Oui, c'est possible avec proxy_cache_bypass directive. Vous pouvez définir une chaîne de requête, un cookie ou un en-tête de requête HTTP qui vous permettra de récupérer la ressource souhaitée directement depuis le serveur dorsal (en contournant le cache du proxy de Nginx) et de sauvegarder cette même réponse dans le cache du proxy pour servir les requêtes suivantes.

Voici quelques exemples :

location / {
  proxy_pass http://backend;
  proxy_cache_valid 168h;

  # Bypass cache with purgecache=true query string and save new response to proxy cache
  proxy_cache_bypass $arg_purgecache;

  # Bypass cache with "x-purge-cache: true" request header and save new response to proxy cache
  proxy_cache_bypass $http_x_purge_cache;

  # Bypass cache with "nocache=true" cookie and save new response to proxy cache
  proxy_cache_bypass $cookie_nocache;
}

Le contournement du proxy_cache fonctionnera tant que le cookie, la chaîne de requête ou l'en-tête de requête n'auront pas une valeur vide ou "0".

Par exemple, pour purger un certain fichier vidéo avec une chaîne de requête, vous pouvez simplement accéder à https://example.com/some/video.mp4?purgecache=true

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X