轉自:http://www.nginx.cn/115.htmlhtml
location匹配命令nginx
~ #波浪線表示執行一個正則匹配,區分大小寫
~* #表示執行一個正則匹配,不區分大小寫
^~ #^~表示普通字符匹配,若是該選項匹配,只匹配該選項,不匹配別的選項,通常用來匹配目錄
= #進行普通字符精確匹配
@ #"@" 定義一個命名的 location,使用在內部定向時,例如 error_page, try_files正則表達式
location 匹配的優先級(與location在配置文件中的順序無關)
= 精確匹配會第一個被處理。若是發現精確匹配,nginx中止搜索其餘匹配。
普通字符匹配,正則表達式規則和長的塊規則將被優先和查詢匹配,也就是說若是該項匹配還需去看有沒有正則表達式匹配和更長的匹配。
^~ 則只匹配該規則,nginx中止搜索其餘匹配,不然nginx會繼續處理其餘location指令。
最後匹配理帶有"~"和"~*"的指令,若是找到相應的匹配,則nginx中止搜索其餘匹配;當沒有正則表達式或者沒有正則表達式被匹配的狀況下,那麼匹配程度最高的逐字匹配指令會被使用。express
location 優先級官方文檔ide
Directives with the = prefix that match the query exactly. If found, searching stops.fetch
All remaining directives with conventional strings, longest match first. If this match used the ^~ prefix, searching stops.this
Regular expressions, in order of definition in the configuration file.spa
If #3 yielded a match, that result is used. Else the match from #2 is used.htm
=前綴的指令嚴格匹配這個查詢。若是找到,中止搜索。rem
全部剩下的常規字符串,最長的匹配。若是這個匹配使用^〜前綴,搜索中止。
正則表達式,在配置文件中定義的順序。
若是第3條規則產生匹配的話,結果被使用。不然,如同從第2條規則被使用。
例如
location = / { # 只匹配"/". [ configuration A ] } location / { # 匹配任何請求,由於全部請求都是以"/"開始 # 可是更長字符匹配或者正則表達式匹配會優先匹配 [ configuration B ] } location ^~ /p_w_picpaths/ { # 匹配任何以 /p_w_picpaths/ 開始的請求,並中止匹配 其它location [ configuration C ] } location ~* \.(gif|jpg|jpeg)$ { # 匹配以 gif, jpg, or jpeg結尾的請求. # 可是全部 /p_w_picpaths/ 目錄的請求將由 [Configuration C]處理. [ configuration D ] }
請求URI例子:
/ -> 符合configuration A
/documents/document.html -> 符合configuration B
/p_w_picpaths/1.gif -> 符合configuration C
/documents/1.jpg ->符合 configuration D
@location 例子
error_page 404 = @fetch;
location @fetch(proxy_pass http://fetch;)