nginx配置 location配置方法及例項詳解

2022-05-06 10:54:11 字數 2984 閱讀 1610

location匹配的是nginx的哪個變數?

$request_uri

location的匹配種類有哪些?

格式  location [ 空格 | = | ~ | ~* |^~

|!~ | !~* ] /uri/ {}

location搜尋順序

順序 no優先順序:(location =) > (location 完整路徑) > (location ^~ 路徑) > (location ~,~* 正則順序) > (location 部分起始路徑) > (/)

1.首先匹配=

2.其次匹配^~

3.再其次按照配置檔案的順序進行正則匹配、

4.最後是交給/進行通用匹配

注意:當有匹配成功時,立刻停止匹配,按照當前匹配規則處理請求

舉例說明

( 這裡使用了 echo-nginx-module 模組,方便做輸出測試 )

精確匹配

location = /images/test.png

location /images/test.png

location \/images\/test\.png$

如果此時請求 http:

會輸出什麼呢?

輸出 config1, 毋容置疑,精確匹配優先順序最高!

精確匹配的特殊情況

location = /

location /

此時是輸入http:

會輸出什麼呢?

是輸出 config2, 怎麼精確匹配的優先順序不靈了呢?

是這樣的,精確匹配還是起作用了,請求目錄(非具體檔案),nginx會將請求內部定向到index檔案,

既此時真正的請求是http:

/index.html, 這是 config2則被命中!

所以精確匹配不要用來匹配 /

字串搜尋與正則搜尋

location /images/test.png

location ^~ /images/

location ~ \/images\/test\.png$

location ~ \/images\/

如果此時請求 http:

會輸出什麼呢?

當然是 config3,正則命中

(雖然 config1 為最長匹配的字串,此時只做記錄,後面還要搜尋正則匹配,則config3正則匹配命中),

仔細觀察可以發現config4也被匹配成功了,但是正則的匹配順序是按照location的定義順序匹配的,所以config3命中.

字串匹配優先順序的提公升( ^~)

location /images/

location ^~ /images/test.png

location ~ /images/test\.png$

location ~ \/images\/

如果此時請求 http:

會輸出什麼呢?

當然是config2, 首部匹配命中

(因為字串匹配是優先搜尋的,此時發現config2 為最長的字串匹配且為^~匹配方式,所以停止搜尋正則,直接命中!)

# 所以這裡的 ^~ 符號比較特殊,就是為了提高字串匹配的優先順序,優先於正則匹配.

精確完全匹配,即使/index.html也匹配不了

/downloads/download.html ->config b

匹配b以後,往下沒有任何匹配,採用b

/images/1.gif ->configuration d

匹配到f,往下匹配到d,停止往下

/images/abc/def ->config d

最長匹配到g,往下匹配d,停止往下

你可以看到 任何以/images/開頭的都會匹配到d並停止,fg寫在這裡是沒有任何意義的,h是永遠輪不到的,這裡只是為了說明匹配順序

/documents/document.html ->config c

匹配到c,往下沒有任何匹配,採用c

匹配到c,往下正則匹配到e

最長匹配到c,往下正則順序匹配到cc,不會往下到e

所以實際使用中,個人覺得至少有三個匹配規則定義,如下:

#直接匹配**根,通過網域名稱訪問**首頁比較頻繁,使用這個會加速處理,官網如是說。

#這裡是直接**給後端應用伺服器了,也可以是乙個靜態首頁

#第乙個必選規則

location = /

#第二個必選規則是處理靜態檔案請求,這是nginx作為http伺服器的強項

#有兩種配置模式,目錄匹配或字尾匹配,任選其一或搭配使用

#第三個規則就是通用規則,用來**動態請求到後端應用伺服器

#非靜態檔案請求就預設是動態請求,自己根據實際把握

#畢竟目前的一些框架的流行,帶.php,.jsp字尾的情況很少了

location /

Nginx配置基礎 location

location表示式型別 表示執行乙個正則匹配,區分大小寫 表示執行乙個正則匹配,不區分大小寫 表示普通字元匹配。使用字首匹配。如果匹配成功,則不再匹配其他location。進行普通字元精確匹配。也就是完全匹配。常規字串匹配。按字首匹配。它定義乙個命名的 location,使用在內部定向時,例如 ...

nginx配置location總結

上 多的不說了,配了很多,終於起效了。對nginx 來說,實現的方法很簡單,只要在location段中,使用 expires 就可以了 格式expires 30s 表示把資料快取30秒 expires 30m 表示把資料快取30分 expires 10h 表示把資料快取10小時 expires 1d...

nginx配置命令 location配置

波浪線表示執行乙個正則匹配,區分大小寫 表示執行乙個正則匹配,不區分大小寫 表示普通字元匹配,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄。進行普通字元精確匹配。定義乙個命名的 location,使用在內部定向時,例如 error page,try files。按配置檔案順序搜尋下...