location匹配命令 ~ #波浪線表示執(zhí)行一個正則匹配,區(qū)分大小寫 ~* #表示執(zhí)行一個正則匹配,不區(qū)分大小寫 ^~ #^~表示普通字符匹配,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄 = #進行普通字符精確匹配 @ #"@" 定義一個命名的 location,使用在內(nèi)部定向時,例如 error_page, try_files
location 匹配的優(yōu)先級(與location在配置文件中的順序無關(guān)) = 精確匹配會第一個被處理。如果發(fā)現(xiàn)精確匹配,nginx停止搜索其他匹配。 普通字符匹配,正則表達式規(guī)則和長的塊規(guī)則將被優(yōu)先和查詢匹配,也就是說如果該項匹配還需去看有沒有正則表達式匹配和更長的匹配。 ^~ 則只匹配該規(guī)則,nginx停止搜索其他匹配,否則nginx會繼續(xù)處理其他location指令。 最后匹配理帶有"~"和"~*"的指令,如果找到相應的匹配,則nginx停止搜索其他匹配;當沒有正則表達式或者沒有正則表達式被匹配的情況下,那么匹配程度最高的逐字匹配指令會被使用。 location 優(yōu)先級官方文檔 - Directives with the = prefix that match the query exactly. If found, searching stops.
- All remaining directives with conventional strings, longest match first. If this match used the ^~ prefix, searching stops.
- Regular expressions, in order of definition in the configuration file.
- If #3 yielded a match, that result is used. Else the match from #2 is used.
- =前綴的指令嚴格匹配這個查詢。如果找到,停止搜索。
- 所有剩下的常規(guī)字符串,最長的匹配。如果這個匹配使用^?前綴,搜索停止。
- 正則表達式,在配置文件中定義的順序。
- 如果第3條規(guī)則產(chǎn)生匹配的話,結(jié)果被使用。否則,如同從第2條規(guī)則被使用。
例如 location = / {
# 只匹配"/".
[ configuration A ]
}
location / {
# 匹配任何請求,因為所有請求都是以"/"開始
# 但是更長字符匹配或者正則表達式匹配會優(yōu)先匹配
[ configuration B ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 開始的請求,并停止匹配 其它location
[ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配以 gif, jpg, or jpeg結(jié)尾的請求.
# 但是所有 /images/ 目錄的請求將由 [Configuration C]處理.
[ configuration D ]
} 請求URI例子: - / -> 符合configuration A
- /documents/document.html -> 符合configuration B
- /images/1.gif -> 符合configuration C
- /documents/1.jpg ->符合 configuration D
@location 例子 error_page 404 = @fetch; location @fetch( proxy_pass http://fetch; ) 轉(zhuǎn)載請保留:http://www./115.html
|