詳細原文查看這裡:http://blog.sina.com.cn/s/blog_6d579ff40100wk2j.html
另一篇歸納原文的文章看這裡:http://blog.csdn.net/yankai0219/ article/details/8070790
變數內插:
所有的 Nginx帶都在檔案中都被引用 前綴,用 $符號+變數名稱來建構新的變量,這種方式叫做變數內插。 例如:location test{
set $a hello;
"b: $b";
}
訪問:
curl http://localhost/test/
輸出:b: hellop world
Module的指令,而echo是HttpEchoModule指令。可見這兩個模組都支援變數插值。 但是並不是所有模組都支援變數插值,事實上,指令參數是否允許「變數插值」,取決於該指令的實作模組。 變量使用注意點:當變數後面直接接其他字串時,需要用{}將變數名括起來,否則會將變數名稱和後面的連變數在一起當成變數名稱例如:
location /test {set $variable "hchoo"; }
變數必須先建立再使用,否則報錯例如:
server {
{
echo $ foo;
}
}
訪問:curl foo" variable
說明: nginxnginx變數的建立和賦值操作發生在全然不同的時間階段。
Nginx變數的建立只能發生在
Nginx配置載入的時候,或者說
Nginx啟動的時候;而賦值操作只會發生在請求實際處理的時候。這意味著不建立而直接使用變數會導致啟動失敗,同時也意味著我們無法在請求處理時動態地建立新的
Nginx變數
變數的可見性:變數的可見性: Nginx 變數一旦創建,其變數名稱的可見範圍就是整個 Nginx配置,甚至可以跨越不同虛擬主機的 server配置區塊。 例如:server { listen 80;
/ echo "foo =[$foo]"; }
location /bar { set $ oo}
}
說明:這裡我們在 location /bar
中用 set
指令創建了變數 $foo
,所以是在整個設定檔中這個變數都是可見的,因此我們可以在這個變數中直接引用這個變數而不用擔心
Nginx會報錯。
訪問這兩個介面的結果:
$ curl 'http://localhost/foo' foo = [] $ curl 'http://localhost/foo' foo = [] 從本例子得出另一個變量特性:
變量名的可見範圍雖然是整個配置,但每個請求都有所有變數的獨立副本,或者說都有各變數用來存放值的容器的獨立副本,彼此互不干擾。 例如前面我們請求了
/bar介面後,$foo變數被賦予了值 32,但它會被賦予了值 32,但它不會影響對它的螺絲所對應的 $foo值(它仍然是空的!),因為各個請求都有自己獨立的 $foo變數的副本對於 Nginx 變數的副本對於的錯誤之一,就是將 Nginx變數理解成某種在請求之間全域共享的東西,或者說「全域變數」。而事實上,Nginx變數的生命期是不可能跨越請求邊界的
uri請求的URI
(經過解碼,並且不包含請求參數)
$ curl 'http://localhost:8080/test'
uri = /test
request_uri = /test/test🜎 ?a=3&b=4'
request_uri = /test?a=3&b=4
/85/test
/testhello%20world?a=3&b=4'
uri = /test/hello world
request_uri = /test/hello%20world?a=3&b=4request_uri = /test/hello%20world?a=3&b=4request_uri = /test/hello%20world?a=3&b=4
reQ=4:用來取得目前的請求名稱xxx
的URI
參數的值
location /test { echo "class :$arg_class";
}
請求和回應:
:$a$a$acomd. class:
$ curl 'http://localhost:8080/test?name=Tom&class=3'
name: Tom
$ curl 'http://localhost:8080/test?name=hello%20world&class=9'
name: hello%20world
class: 9不但可以符合 name
參數,也可以匹配
NAME
參數,抑或是
Name,等等,
Nginx名調整為全部小寫的形式:
$ curl 'http://localhost:8080/test?NAME=Marry'
:$ curl 'http://localhost:8080/test?Name=Jimmy'
name: Jimmy
class:
$cookie_xxx變數群:用來取得cookie值
$http_xxx變數群的值
$args:回傳目前請求的URL
參數字串(即請求URL
以上就介紹了nginx 變量,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。