語法規則: location [=||*|^~] /uri/ { … }
~ #波浪線表示執行一個正則匹配,區分大小寫
~* #表示執行一個正則匹配,不區分大小寫
^~ #^~表示普通字符匹配,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄
= #進行普通字符精確匹配
@ #"@" 定義一個命名的 location,使用在內部定向時,例如 error_page, try_files
官方文檔:
1,=前綴的指令嚴格匹配這個查詢。如果找到,停止搜索。
2,所有剩下的常規字符串,最長的匹配。如果這個匹配使用^?前綴,搜索停止。
3,正則表達式,在配置文件中定義的順序。
4,如果第3條規則產生匹配的話,結果被使用。否則,如同從第2條規則被使用。
例子:
location = / {
# 只匹配"/".
[ configuration A ]
}
location / {
# 匹配任何請求,因為所有請求都是以"/"開始
# 但是更長字符匹配或者正則表達式匹配會優先匹配
[ configuration B ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 開始的請求,并停止匹配 其它location
[ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配以 gif, jpg, or jpeg結尾的請求.
# 但是所有 /images/ 目錄的請求將由 [Configuration C]處理.
[ configuration D ]
}
@location 例子
error_page 404 = @fetch;
location @fetch(
proxy_pass http://fetch;
)