2011-05-02 132 views
16

我有一個緩存系統,如果在$ request_uri中找到用戶名(在cookie中),我需要繞過這個系統。我試圖做這樣的事情,但不能讓變量插入正則表達式。有什麼建議可以嗎?如何使用nginx中的變量「if」正則表達式

我可以從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

回答

9

這不完全是我問的,但我認爲它會適用於我的目的。如果其他人知道,我仍然很好奇如何在nginx PCRE正則表達式中插入一個變量!

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

你必須在第一行語法錯誤的清單,我想。雙等號運算符不應該在那裏。我認爲這是我的*問題一秒鐘,但將它們放入配置文件不會通過任何啓動前檢查。 – pospi 2014-07-25 04:41:19

0

它可以通過只把$的變量前一個正則表達式表達式中納入一個變量...沒必要做$ {}

,所以我想你的情況

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

正則表達式屆時將等於-凱文

我已經受夠了這樣的工作,爲更復雜的正則表達式規則

,我想淵源考匹配的可能的域名

set $domainWhitelist "yahoo\.com|google\.com|foo\.com"; 
if ($http_origin ~* "https?://([\w-]*\.)*($domainWhitelist)(:\d+)?") { 
... 
} 
相關問題