如何在nginx"if"正则表达式中使用变量

Kev*_*vin 24 regex nginx

如果在$ request_uri中找到用户的名字(在cookie中),我有一个我需要绕过的缓存系统.我试图做这样的事情,但不能让变量插入正则表达式.有什么建议吗?

我可以从cookie中设置$ me变量; 我只是不能让它插入正则表达式.

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

我总是尝试这样的事情:

if ($uri ~ "by-{$me}") { set $chk ""; }
Run Code Online (Sandbox Code Playgroud)

谢谢!-Kevin

Kev*_*vin 18

这不完全是我问的问题,但我认为这对我的目的有用.如果有其他人知道的话,我仍然很好奇如何在nginx PCRE正则表达式中插入一个变量!

set $chk == "need"; 
set $me "kevin"; 
if ($uri ~ /by-([^-]+)/) { set $by $1; }
if ($by = $me) {set $chk "";}
Run Code Online (Sandbox Code Playgroud)

  • 我认为你在第一行有语法错误.双等于运算符不应该在那里.我认为这是*我的*问题一秒钟,但将它们放入配置文件将不会通过任何启动前检查. (4认同)