nginx location 的配置

yupeng發表於2013-12-26

一、基本語法:location [=|~|~*|^~] /uri/ { … }

二、分類:

 1.基本location:以“ = ”或“ ^~ ”為字首或者沒有任何字首的 /uri/ 

 2.正則location:以“ ~ ”或“ ~* ”為字首的 /uri/

 基本location 又分為2種:

  1)嚴格精確匹配:  “ = ” 

  2)最大字首匹配: 無字首 或者以“ ^~ ”

三、解釋:

  1)= 嚴格匹配。如果這個查詢匹配,那麼將停止搜尋並立即處理此請求。
  2)~ 為區分大小寫匹配(可用正規表示式)
  3)~* 為不區分大小寫匹配(可用正規表示式)
  4)!~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配
  5)^~ 如果把這個字首用於一個常規字串,那麼告訴nginx 如果路徑匹配那麼不測試正規表示式。

四、規則:

  1.先匹配普通 location ,再匹配正則 location ,但是如果普通 location 的匹配結果恰好是“嚴格精確( exact match )”的,則 nginx 不再嘗試後面的正則 location ;如果普通 location 的匹配結果是“最大字首”,則正則 location 的匹配覆蓋普通 location 的匹配。

  2.基本location 中,嚴格精確匹配大於最大字首

  2.對於普通 location 指令,匹配規則是:最大字首匹配(與順序無關),如果恰好是嚴格精確匹配結果或者加有字首“ ^~ ”或“ = ”(符號“ = ”只能嚴格匹配,不能字首匹配),則停止搜尋正則 location ;但對於正則 location 的匹配規則是:按編輯順序逐個匹配(與順序有關),只要匹配上,就立即停止後面的搜尋。

 

相關文章