- 在 Nginx 配置中祟剔,變量只能存放一種類型的值限次,因為也只存在一種類型的值芒涡,那就是字符串。
- 變量插值,nginx配置支持费尽,但ngx_lua不支持
- set 指令(以及前面提到的 geo 指令)不僅有賦值的功能赠群,它還有創(chuàng)建 Nginx 變量的副作用,即當(dāng)作為賦值對象的變量尚不存在時依啰,它會自動創(chuàng)建該變量乎串。
- Nginx 變量的創(chuàng)建和賦值操作發(fā)生在全然不同的時間階段店枣。Nginx 變量的創(chuàng)建只能發(fā)生在 Nginx 配置加載的時候速警,或者說 Nginx 啟動的時候;而賦值操作則只會發(fā)生在請求實際處理的時候鸯两。這意味著不創(chuàng)建而直接使用變量會導(dǎo)致啟動失敗闷旧,同時也意味著我們無法在請求處理時動態(tài)地創(chuàng)建新的 Nginx 變量。
- Nginx 變量名的可見范圍雖然是整個配置钧唐,但每個請求都有所有變量的獨(dú)立副本忙灼,或者說都有各變量用來存放值的容器的獨(dú)立副本,彼此互不干擾钝侠。比如前面我們請求了 /bar 接口后该园,$foo 變量被賦予了值 32,但它絲毫不會影響后續(xù)對 /foo 接口的請求所對應(yīng)的 $foo 值(它仍然是空的K汀)里初,因為各個請求都有自己獨(dú)立的 $foo 變量的副本。
- Nginx 變量值容器的生命期是與當(dāng)前正在處理的請求綁定的忽舟,而與 location 無關(guān)双妨。內(nèi)部請求改變了location,但未改變變量值容器叮阅,外部請求相當(dāng)于新的請求刁品,所以會變。
- “子請求”則是由 Nginx 正在處理的請求在 Nginx 內(nèi)部發(fā)起的一種級聯(lián)請求浩姥√羲妫“子請求”在外觀上很像 HTTP 請求,但實現(xiàn)上卻和 HTTP 協(xié)議乃至網(wǎng)絡(luò)通信一點兒關(guān)系都沒有勒叠。它是 Nginx 內(nèi)部的一種抽象調(diào)用兜挨,目的是為了方便用戶把“主請求”的任務(wù)分解為多個較小粒度的“內(nèi)部請求”,并發(fā)或串行地訪問多個 location 接口缴饭,然后由這些 location 接口通力協(xié)作暑劝,共同完成整個“主請求”。當(dāng)然颗搂,“子請求”的概念是相對的担猛,任何一個“子請求”也可以再發(fā)起更多的“子子請求”,甚至可以玩遞歸調(diào)用(即自己調(diào)用自己)。當(dāng)一個請求發(fā)起一個“子請求”的時候傅联,按照 Nginx 的術(shù)語先改,習(xí)慣把前者稱為后者的“父請求”(parent request)。
- 內(nèi)建變量 $arg_XXX 在請求 URL 參數(shù) XXX 并不存在時會返回特殊值“找不到”蒸走,但遺憾的是在 Nginx 原生配置語言(我們估且這么稱呼它)中是不能很方便地把它和空字符串區(qū)分開來的仇奶,ngx_lua可以,nil => missing “” =》“”
- Nginx 一般會在 content 階段安排三個這樣的靜態(tài)資源服務(wù)模塊(除非你的 Nginx 在構(gòu)造時顯式禁用了這三個模塊中的一個或者多個比驻,又或者啟用了這種類型的其他模塊)该溯。按照它們在 content 階段的運(yùn)行順序,依次是 ngx_index 模塊别惦, ngx_autoindex 模塊狈茉,以及 ngx_static 模塊。
- echo_exec 指令和 rewrite 指令可以發(fā)起“內(nèi)部跳轉(zhuǎn)”掸掸。這種跳轉(zhuǎn)會自動修改當(dāng)前請求的 URI氯庆,并且重新匹配與之對應(yīng)的 location 配置塊,再重新執(zhí)行 rewrite扰付、access堤撵、content 等處理階段。
- Nginx 處理請求的過程一共劃分為 11 個階段羽莺,按照執(zhí)行順序依次是 post-read实昨、server-rewrite、find-config禽翼、rewrite屠橄、post-rewrite、preaccess闰挡、access锐墙、post-access、try-files长酗、content 以及 log.
- “主請求”以及各個“子請求”都擁有不同的變量 $var 的值容器副本
nginx總結(jié)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門吉挣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來派撕,“玉大人,你說我怎么就攤上這事睬魂≈蘸穑” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵氯哮,是天一觀的道長际跪。 經(jīng)常有香客問我,道長喉钢,這世上最難降的妖魔是什么姆打? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮出牧,結(jié)果婚禮上穴肘,老公的妹妹穿的比我還像新娘。我一直安慰自己舔痕,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布豹缀。 她就那樣靜靜地躺著伯复,像睡著了一般。 火紅的嫁衣襯著肌膚如雪邢笙。 梳的紋絲不亂的頭發(fā)上啸如,一...
- 文/蒼蘭香墨 我猛地睜開眼杨箭,長吁一口氣:“原來是場噩夢啊……” “哼寞焙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起互婿,我...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 年R本政府宣布澎语,位于F島的核電站,受9級特大地震影響验懊,放射性物質(zhì)發(fā)生泄漏擅羞。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一义图、第九天 我趴在偏房一處隱蔽的房頂上張望减俏。 院中可真熱鬧,春花似錦碱工、人聲如沸娃承。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽历筝。三九已至,卻和暖如春廊谓,著一層夾襖步出監(jiān)牢的瞬間梳猪,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- Nginx API for Lua Introduction ngx.arg ngx.var.VARIABLE C...
- 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx俺祠?那么一定聽過它的“同行”Apache吧!Ngi...
- 指令集 lua_capture_error_log lua_use_default_type lua_malloc...
- 一借帘、nginx執(zhí)行步驟 nginx在處理每一個用戶請求時蜘渣,都是按照若干個不同的階段依次處理的,與配置文件上的順序沒...
- openresty OpenResty是一個基于 Nginx 與 Lua 的高性能 Web 平臺肺然,其內(nèi)部集成了大量...