天天看點

Nginx 變量漫談(二)

關于 Nginx 變量的另一個常見誤區是認為變量容器的生命期,是與 <code>location</code> 配置塊綁定的。其實不然。我們來看一個涉及“内部跳轉”的例子:

但如果我們從用戶端直接通路 <code>/bar</code> 接口,就會得到空的 <code>$a</code> 變量的值,因為它依賴于 <code>location /foo</code> 來對 <code>$a</code>進行初始化。

    從上面這個例子我們看到,Nginx 變量值容器的生命期是與目前正在處理的請求綁定的,而與 <code>location</code> 無關。

然後在指令行上使用各種參數組合去請求這個 <code>/test</code> 接口:

其實 <code>$arg_name</code> 不僅可以比對 <code>name</code> 參數,也可以比對 <code>NAME</code> 參數,抑或是 <code>Name</code>,等等:

Nginx 會在比對參數名之前,自動把原始請求中的參數名調整為全部小寫的形式。

現在我們再看一下效果:

空格果然被解碼出來了!

這個有問題的配置會讓 Nginx 在啟動的時候報出一條令人匪夷所思的錯誤:

繼續閱讀