1. 程式人生 > >location匹配

location匹配

location匹配命令

~      #波浪線表示執行一個正則匹配,區分大小寫
~*    #表示執行一個正則匹配,不區分大小寫
^~    #^~表示普通字元匹配,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄
=      #進行普通字元精確匹配
@     #"@" 定義一個命名的 location,使用在內部定向時,例如 error_page, try_files

location 匹配的優先順序(與location在配置檔案中的順序無關)


= 精確匹配會第一個被處理。如果發現精確匹配,nginx停止搜尋其他匹配。
普通字元匹配,正則表示式規則和長的塊規則將被優先和查詢匹配,也就是說如果該項匹配還需去看有沒有正則表示式匹配和更長的匹配。
^~ 則只匹配該規則,nginx停止搜尋其他匹配,否則nginx會繼續處理其他location指令。
最後匹配理帶有"~"和"~*"的指令,如果找到相應的匹配,則nginx停止搜尋其他匹配;當沒有正則表示式或者沒有正則表示式被匹配的情況下,那麼匹配程度最高的逐字匹配指令會被使用。

location 優先順序官方文件

  1. Directives with the = prefix that match the query exactly. If found, searching stops.
  2. All remaining directives with conventional strings, longest match first. If this match used the ^~ prefix, searching stops.
  3. Regular expressions, in order of definition in the configuration file.
  4. If #3 yielded a match, that result is used. Else the match from #2 is used.
  1. =字首的指令嚴格匹配這個查詢。如果找到,停止搜尋。
  2. 所有剩下的常規字串,最長的匹配。如果這個匹配使用^〜字首,搜尋停止。
  3. 正則表示式,在配置檔案中定義的順序。
  4. 如果第3條規則產生匹配的話,結果被使用。否則,使用第2條規則的結果。