匹配規(guī)則
- 精確匹配,以
=
開(kāi)頭。如:location = /index.html {
return 200 "精確匹配/index.html";
}
- 普通匹配,沒(méi)有任何修飾符。如:
location /images/ {
return 200 "普通匹配,匹配以/images/開(kāi)頭的URI";
}
- 正則匹配,以
~
開(kāi)頭,~
表示區(qū)分大小寫(xiě),~*
表示不區(qū)分大小寫(xiě)。如:location ~ \.js$ {
return 200 "匹配.js結(jié)尾的URI";
}
location ~* \.jpg$ {
return 200 "匹配.JPG或.jpg結(jié)尾的URI";
}
- 前綴匹配,以
^~
開(kāi)頭,如location ^~ /images/ {
return 200 "前綴匹配,匹配以/images/開(kāi)頭的URI";
}
匹配優(yōu)先級(jí)
不同匹配優(yōu)先級(jí)從高到低為:
~
~*
正則匹配,正則匹配中遇到第一個(gè)滿足的匹配就返回。- 普通匹配,普通匹配中長(zhǎng)匹配在本級(jí)中最高。
優(yōu)先級(jí)測(cè)試
一、配置規(guī)則
location /home {
return 200 "home目錄";
}
location / {
return 200 "根目錄";
}
location = /index.html {
return 200 "精確匹配/index.html";
}
location ^~ /index.html {
return 200 "前綴匹配/index.html";
}
location ^~ /content/ {
return 200 "前綴匹配,匹配以/content/開(kāi)頭的URI";
}
location ~ \.html$ {
return 200 "正則匹配,匹配.html結(jié)尾的URI";
}
location ~ logo\.jpg$ {
return 200 "正則匹配,匹配logo.jpg結(jié)尾的URI";
}
location ~ \.jpg$ {
return 200 "正則匹配,匹配.jpg結(jié)尾的URI";
}
location /images/logo/ {
return 200 "普通匹配,匹配以/images/logo/開(kāi)頭的URI";
}
location /images/ {
return 200 "普通匹配,匹配以/images/開(kāi)頭的URI";
}
二、測(cè)試
- 驗(yàn)證
精確匹配
優(yōu)先級(jí)高于前綴匹配
- GET http://localhost:85/index.html
- 同時(shí)滿足
/index.html
和^~ /index.html
,返回精確匹配/index.html
- 驗(yàn)證
前綴匹配
優(yōu)先級(jí)高于正則匹配
- GET http://localhost:85/content/home.html
- 同時(shí)滿足
^~ /content/
和~ \.html$
,返回前綴匹配,匹配以/content/開(kāi)頭的URI
- 驗(yàn)證
正則匹配
優(yōu)先級(jí)高于普通匹配
- GET http://localhost:85/images/logo/1.jpg
- 同時(shí)滿足
~ \.jpg$
和/images/logo/
,返回正則匹配,匹配.jpg結(jié)尾的URI
- 驗(yàn)證
正則匹配中遇到第一個(gè)滿足的匹配就返回
- GET http://localhost:85/logo.jpg
- 同時(shí)滿足
~ logo\.jpg$
和~ \.jpg$
,返回正則匹配,匹配logo.jpg結(jié)尾的URI
- 驗(yàn)證
正則匹配中遇到第一個(gè)滿足的匹配就返回
- GET http://localhost:85/logo1.jpg
- 驗(yàn)證
普通匹配中長(zhǎng)匹配在本級(jí)中最高
- GET http://localhost:85/images/logo/1.png
- 同時(shí)滿足
/images/logo/
和/images/
,返回普通匹配,匹配以/images/logo/開(kāi)頭的URI
- 驗(yàn)證
普通匹配中長(zhǎng)匹配在本級(jí)中最高
- GET http://localhost:85/home/1.action
- 精確匹配、前綴匹配、正則匹配都不滿足,僅匹配了普通匹配中最短匹配
- GET http://localhost:85/static/1.action
閱讀原文:原文鏈接
該文章在 2025/7/1 23:39:46 編輯過(guò)