2017-08-18 4 views
0

Mon fastcgi_cache_key est:fastcgi_cache_key exclure certains args dans la demande uri

fastcgi_cache_key "$host$request_method$request_uri"; 

Mon request_uri de $ a horodatage et signature en elle:

/abc/xyz?product_id=10529125896&shop_id=17224077&shop=abc.com&path_prefix=%2Fa%2Fcomment&timestamp=1503044416&signature=882102c51c7b7bd4c5d8521a6565fc70c27b908547316f1123eb4af13b19f2da 

Ainsi, le cache toujours MISS (car il a différents horodatage et signature). Ma question est:

Je veux créer un nouveau var et utiliser ce var pour fastcgi_cache_key. Cette volonté var a quelque chose comme ceci:

myvar

/abc/xyz?product_id=10529125896&shop_id=17224077&shop=abc.com 

fastcgi_cache_key sera comme ceci:

fastcgi_cache_key "$host$request_method$myvar"; 

Comment puis-je faire cela? Merci beaucoup.

Répondre

0

Il y a deux façons de le faire.

if ($request_uri ~ "([^\?]*)\?(.*)timestamp=([^&]*)&?(.*)") { 
    set $args $2$4; 
} 
fastcgi_cache_key "$host$request_method$args"; 

Cela supprimera l'horodatage. Vous pouvez soit modifier le motif pour ignorer un autre champ, soit l'utiliser deux fois pour supprimer le champ de $args.

L'option suivante est d'utiliser openresty ou Nginx avec lua qui vous permet d'exécuter le script Lua dans votre code. if les conditions ne sont pas considérées bonnes. Mais alors avoir lua augmente vos besoins en logiciels

+0

Merci Tarun Lalwani – user3709412