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

2022-07-20 22:45:23 字數 1759 閱讀 8081

今天深入研究了下nginx的location的用法,已經一些需要注意的細節,現在做乙個歸納總結,以備後面查詢。

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

$request_uri
location的匹配種類有哪些?
格式  location [ 空格 | = | ~ | ~* | !~ | !~* ] /uri/ {}

# 精確匹配: 相等(=)

# 字串匹配: 字串匹配(空格) 匹配開頭(^~)

# 正則匹配: 區分大小寫匹配(~) 不區分大小寫匹配(~*) 區分大小寫不匹配(!~) 不區分大小寫不匹配(!~*)

location搜尋優先順序優先順序如何?
精確匹配 > 字串匹配( 長 > 短 [ 注: ^~ 匹配則停止匹配 ]) > 正則匹配( 上 > 下 )

# 精確匹配只能命中乙個

# 字串匹配使用匹配最長的最為匹配結果

# 正則匹配按照location定義的順序進行匹配,先定義具有高優先順序

特別注意:

舉例說明

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

精確匹配

location = /images/test.png

location /images/test.png

location \/images\/test\.png$

如果此時請求 會輸出什麼呢?

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

精確匹配的特殊情況

location = /

location /

此時是輸入 會輸出什麼呢?

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

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

既此時真正的請求是/index.html, 這是 config2則被命中!

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

字串搜尋與正則搜尋

location /images/test.png

location ^~ /images/

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

location ~ \/images\/

如果此時請求 會輸出什麼呢?

當然是 config3,正則命中

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

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

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

location /images/

location ^~ /images/test.png

location ~ /images/test\.png$

location ~ \/images\/

如果此時請求 會輸出什麼呢?

當然是config2, 首部匹配命中

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

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

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。按配置檔案順序搜尋下...