如果在$ request_uri中找到用户的名字(在cookie中),我需要绕过一个缓存系统。我试图做这样的事情,但不能让变量插入正则表达式。有什么建议吗?
我可以从cookie中设置$ me变量;我只是无法将其插入到正则表达式中。
set $chk == "need";
set $me "kevin";
if ($uri ~ $me) { set $chk ""; }
if ($chk == "need") { rewrite ^ /testing }
我总是尝试这样的事情:
if ($uri ~ "by-{$me}") { set $chk ""; }
谢谢! -Kevin
答案 0 :(得分:16)
这不完全是我的要求,但我认为这对我的目的有用。如果有其他人知道的话,我仍然很好奇如何在nginx PCRE正则表达式中插入一个变量!
set $chk == "need";
set $me "kevin";
if ($uri ~ /by-([^-]+)/) { set $by $1; }
if ($by = $me) {set $chk "";}
答案 1 :(得分:-1)
可以在变量表达式中加入变量,只需将$放在变量前面......不需要执行$ {}
所以我想你的情况
if ($uri ~ "by-$me") { set $chk ""; }
正则表达式将等于by-kevin
对于更复杂的正则表达式规则,我已经有了这样的工作
我希望orgin匹配可能的域名列表
set $domainWhitelist "yahoo\.com|google\.com|foo\.com";
if ($http_origin ~* "https?://([\w-]*\.)*($domainWhitelist)(:\d+)?") {
...
}