|
|
|
|
|
|
NGINX 服務器塊中的 location 指令允許將請求路由到文件系統中的正確位置。該指令用于告訴 NGINX 在哪里查找資源,方法是在將位置塊與 URL 匹配時包含文件和文件夾。在本教程中,我們將詳細了解 NGINX location 指令。

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