location指令是http子產品當中最核心的一項配置,根據預先定義的url比對規則來接收使用者發送的請求,根據比對結果,将請求轉發到背景伺服器、非法的請求直接拒絕并傳回403、404、500錯誤處理等。
~ 波浪線表示執行一個正則比對,區分大小寫
~* 表示執行一個正則比對,不區分大小寫
^~ 表示普通字元比對,如果該選項比對,隻比對該選項,不比對别的選項,一般用來比對目錄
= 進行普通字元精确比對
@ 定義一個命名的 location,使用在内部定向時,例如 error_page, try_files
與location在配置檔案中的順序無關
= 精确比對會第一個被處理。如果發現精确比對,nginx停止搜尋其他比對。
普通字元比對,正規表達式規則和長的塊規則将被優先和查詢比對,也就是說如果該項比對還需去看有沒有正規表達式比對和更長的比對。
^~ 則隻比對該規則,nginx停止搜尋其他比對,否則nginx會繼續處理其他location指令。
最後比對理帶有"~"和"~*"的指令,如果找到相應的比對,則nginx停止搜尋其他比對;當沒有正規表達式或者沒有正規表達式被比對的情況下,那麼比對程度最高的逐字比對指令會被使用。
來自實踐總結中:
(location =) > (location 完整路徑 >) >(location ^~ 路徑) >(location ~* 正則) >(location 路徑)