Almacenamiento en caché de proxy NGINX - variable de destrucción de caché en la cadena de consulta - ¿es posible ignorarla?

Almacenamiento en caché de proxy NGINX - variable de destrucción de caché en la cadena de consulta - ¿es posible ignorarla?

Tenemos la siguiente URL que nos gustaría almacenar en caché mediante proxy:

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

El parámetro de cadena de consulta "parámetro" varía entre solicitudes. También lo hace "parámetro2".

El parámetro de cadena de consulta r es una marca de tiempo que utilizamos para asegurarnos de que el cliente no proporcione contenido almacenado en caché (en el lado del cliente). También conocido como "destructor de caché". Sí, también utilizamos todos los encabezados h apropiados para no almacenar en caché.

Ahora, nos gustaría almacenar en caché mediante proxy a través de nginx algunas de estas solicitudes. ¿Es posible indicarle a nginx que ignore el parámetro r querystring pero use todos los demás al configurar una clave de caché para la entrada? Si no podemos ignorar el parámetro r, entonces el caché del proxy nginx será inútil ya que cada clave de caché será única.

Gracias.

Respuesta1

Hemos encontrado una solución a esta pregunta.

El método correcto para hacer esto es construir una clave de caché utilizando $arg_...variables nginx. $arg_...contendrá parámetros de cadena de consulta. Entonces, en el ejemplo anterior usaríamos $arg_parametery $arg_parameter2dentro de la clave de caché.

El resultado nginx.confse parece a:

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

Tenga en cuenta que el parámetro de cadena de consulta que contiene un guión (guión), como data-*los parámetros, no funciona con la $arg_paramNamesintaxis. Se puede encontrar una solución alternativa usando Lua enesta publicación.

información relacionada