7 votes

Mise en cache du proxy NGINX - variable cache buster dans la chaîne de requête - est-il possible de l'ignorer ?

Nous avons l'url suivante que nous voudrions mettre en cache par proxy :

file.php?parameter=one&paramater2=two&r=EPOCHTIMESTAMP

Le paramètre "paramètre" de la chaîne de requête varie selon les requêtes. Il en va de même pour "paramater2".

Le paramètre d'enchaînement des requêtes r est un horodatage que nous utilisons pour nous assurer que le client ne sert pas de contenu en cache (du côté du client). Alias "cache buster". Oui, nous utilisons également tous les en-têtes "Don't cache h" appropriés.

Maintenant, nous aimerions mettre en cache par proxy via nginx certaines de ces demandes. Est-il possible de demander à nginx d'ignorer le paramètre r de la chaîne de requête mais d'utiliser tous les autres lors de la définition d'une clé de cache pour l'entrée ? Si nous ne pouvons pas ignorer le paramètre r, le cache proxy de nginx sera inutile car chaque clé de cache sera unique.

Merci.

10voto

anonymous-one Points 878

Nous avons trouvé une solution à cette question.

La méthode correcte consiste à construire une clé de cache en utilisant nginx $arg_... variables. $arg_... contiendra les paramètres de la chaîne d'interrogation. Ainsi, dans l'exemple ci-dessus, nous utiliserions $arg_parameter y $arg_parameter2 dans la clé du cache.

Le résultat dans le nginx.conf ressemble :

http {
  ...
    server {
      location / {
         ...
         proxy_cache_key $scheme$proxy_host$uri$is_args$arg_parameter$arg_parameter2;
      }
    }
  ...
}

Notez que le paramètre de la chaîne de requête contenant un trait d'union (tiret), tel que data-* ne fonctionnent pas avec les paramètres $arg_paramName syntaxe. Une solution de contournement utilisant Lua peut être trouvée dans ce poste .

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