|
|
|
|
|
NGINX 服務(wù)器塊中的 location
指令允許將請求路由到文件系統(tǒng)中的正確位置。該指令用于告訴 NGINX 在哪里查找資源,方法是在將位置塊與 URL 匹配時包含文件和文件夾。在本教程中,我們將詳細(xì)了解 NGINX location
指令。
NGINX location 指令語法
NGINX location
塊可以放置在服務(wù)器塊內(nèi)或另一個 location
塊內(nèi),但有一些限制。構(gòu)造 location
塊的語法是:
location [modifier] [URI] {
...
...
}
location
塊中的修飾符是可選的。在 location
塊中有一個修飾符將允許 NGINX 以不同的方式處理 URL。幾個最常見的修飾符是:
location
塊中沒有修飾符,則請求的 URI 將與請求的 URI 的開頭匹配。location
塊與請求的 URI 完全匹配。^
用于對請求的 URI 執(zhí)行最長的非正則表達(dá)式匹配。如果請求的 URI 命中這樣的 location
塊,則不會發(fā)生進(jìn)一步的匹配。NGINX 如何選擇 location 塊
可以使用前綴字符串或使用正則表達(dá)式來定義 location
。不區(qū)分大小寫的正則表達(dá)式使用前面的“ ~*
”修飾符指定,對于不區(qū)分大小寫的正則表達(dá)式,使用“ ~
”修飾符。為了找到一個 URI 的 location
匹配,NGINX 首先掃描使用前綴字符串(沒有正則表達(dá)式)定義的 location
。此后,正則表達(dá)式的 location
會按照它們在配置文件中的聲明順序進(jìn)行檢查。NGINX 將運(yùn)行以下步驟來根據(jù)請求的 URI 選擇 location
塊。
location = /some/path/
指定的完全匹配,如果找到匹配,則立即提供此塊。location
塊,則 NGINX 繼續(xù)匹配最長的非精確前綴,如果在使用 ^~
修飾符的 location
找到匹配項,則 NGINX 將停止進(jìn)一步搜索并選擇此 location
塊來服務(wù)請求。location
不包含 ^~
修飾符,則臨時存儲匹配并繼續(xù)執(zhí)行以下步驟。~
和 ~*
修飾符的 location
塊,并選擇與請求 URI 匹配的第一個 location
塊,并立即選擇為請求提供服務(wù)。location
,則使用先前存儲的前綴 location
來為請求提供服務(wù)。NGINX location 塊示例
讓我們列出幾個使用修飾符和 URI 的 NGINX location
塊示例。
1、匹配所有請求的NGINX位置
在以下示例中,前綴位置 /
將匹配所有請求,但如果未找到匹配項,將用作最后的手段。
location / {
...
}
2、NGINX 位置匹配準(zhǔn)確的 URL
NGINX 總是首先嘗試匹配最具體的前綴位置。因此,以下位置塊中的等號強(qiáng)制與請求的路徑完全匹配,然后停止搜索更多匹配項。
location = /images {
...
}
上面的 location
塊將與 URL https://domain.com/images
匹配,但 URL https://domain.com/images/index.html
或 https://domain.com/images/
不會匹配。
3、目錄的 NGINX 位置塊
以下位置塊將匹配任何以 /images/
開頭的請求,但會繼續(xù)為所請求的 URI 搜索更具體的塊。因此,如果 NGINX 沒有找到任何更具體的匹配,則將選擇位置塊。
location /images/ {
...
...
}
4、NGINX 位置正則表達(dá)式示例
以下位置塊中的修飾符^~
導(dǎo)致區(qū)分大小寫的正則表達(dá)式匹配。因此,URI /images
或 /images/logo.png
將被匹配,但一旦找到匹配項就會停止搜索。
location ^~ /images {
...
...
}
5、image/css/js 文件類型的 NGINX 位置塊
下一個位置塊中的修飾符~*
匹配任何以 png、ico、gif、jpg、jpeg、css 或 js 結(jié)尾的請求(不區(qū)分大小寫)。但是,對文件夾/images/
的任何請求都將由先前的位置塊提供服務(wù)。
location ~* .(png|ico|gif|jpg|jpeg|css|js)$ {
...
...
}
6、NGINX 位置 RegEx 區(qū)分大小寫匹配
以下位置塊中的修飾符~
會導(dǎo)致區(qū)分大小寫的正則表達(dá)式匹配,但不會停止搜索更好的匹配。
location ~ /images {
...
...
}
7、NGINX 位置正則表達(dá)式不區(qū)分大小寫匹配示例
以下位置塊中的修飾符~*
會導(dǎo)致不區(qū)分大小寫的正則表達(dá)式匹配,但搜索不會在此處停止以獲得更好的匹配。
location ~* /images {
...
...
}
總結(jié)
了解 NGINX location
指令對于跟蹤文件系統(tǒng)中請求的 URI 的端點至關(guān)重要。本文中討論的修飾符、選擇位置塊的步驟和一些示例將幫助你輕松開始在 NGINX 中使用 location
塊。
相關(guān)文章