一、基本語法: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 的匹配規則是:按編輯順序逐個匹配(與順序有關),只要匹配上,就立即停止后面的搜索。