web-dev-qa-db-fra.com

comment utiliser une variable dans une expression régulière "if" nginx

J'ai un système de mise en cache que je dois contourner si le nom de l'utilisateur (dans un cookie) se trouve dans $ request_uri. J'essaie de faire quelque chose comme ça, mais je n'arrive pas à faire interpoler la variable dans l'expression régulière. Des suggestions assez s'il vous plaît?

Je peux très bien définir la variable $ me à partir du cookie; Je n'arrive tout simplement pas à l'interpoler dans l'expression régulière.

set $chk == "need"; 
set $me "kevin"; 
if ($uri ~ $me) { set $chk ""; } 
if ($chk == "need") { rewrite ^ /testing }

J'ai toujours essayé des choses comme ça:

if ($uri ~ "by-{$me}") { set $chk ""; }

Merci! -Kevin

25
Kevin

Ce n'est pas exactement ce que j'ai demandé, mais je pense que cela fonctionnera pour mes besoins. Je suis toujours curieux de savoir comment interpoler une variable à l'intérieur d'une expression régulière nginx PCRE si quelqu'un d'autre le sait!

set $chk == "need"; 
set $me "kevin"; 
if ($uri ~ /by-([^-]+)/) { set $by $1; }
if ($by = $me) {set $chk "";}
18
Kevin