Tenemos la siguiente URL que nos gustaría almacenar en caché mediante proxy:
file.php?parameter=one¶mater2=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_parameter
y $arg_parameter2
dentro de la clave de caché.
El resultado nginx.conf
se 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_paramName
sintaxis. Se puede encontrar una solución alternativa usando Lua enesta publicación.