2017-03-28 18 views
0

我已經安裝了Nginx的1.11.0,我試圖在此基礎上正則表達式來設置變量:Nginx的正則表達式不設置變量

map $args $foo { 
    "~(^|(?<pre>.*?)&)(cb\=[^&]+)(?<post>.*)"  "$pre$post"; 
    default           "cat"; 
} 

而且,我有

proxy_cache_key "$scheme$host$uri$foo"; 
    add_header Cache-Buster "$foo"; 

當我開始Nginx的並運行curl命令:

curl -I localhost:80/?foo=test&cb=112&bar=test

我總是得到貓作爲響應。任何想法爲什麼?我通過一個在線正則表達式測試器來運行它,它似乎可以在線工作。

回答

0

我很接近。這是我一直在尋找:

"~(^|(?<pre>.*?)\&)((cb\=[^&]+)\&)(?<post>.*)"

運行與周圍的URL單引號curl命令也有助於躲避&符號:

curl -I 'localhost/?foo=5&cb=234432&bar=test'