正则
^ 以什么开始
$ 以什么结束
^/api/user$
location 路径匹配
语法 location [ = | ~ | ~* | ^~ ] uri { … }
location = /uri
= 表示精准匹配,只要完全匹配上才能生效
location /uri
不带任何修饰符,表示前缀匹配
location ^~ /uri/
匹配任何已 /uri/ 开头的任何查询并且停止搜索
location /
通用匹配,任何未匹配到其他location的请求都会匹配到
正则匹配
区分大小写匹配(~)
不区分大小写匹配(~*)
优先级(不要写复杂,容易出问题和遗忘)
精准匹配 > 字符串匹配(若有多个匹配项匹配成功,那么选择匹配长的并记录) > 正则匹配
案例
server {
server_name xdclass.net;
location ~^/api/pub$ {
…
}
}
^/api/pub$这个正则表达式表示字符串必须以/开始,以b $结束,中间必须是/api/pub
http://xdclass.net/api/v1 匹配(完全匹配)
http://xdclass.net/API/PUB 不匹配,大小写敏感
http://xdclass.net/api/pub?key1=value1 匹配
http://xdclass.net/api/pub/ 不匹配
http://xdclass.net/api/public 不匹配,不能匹配正则表达式
测试
location = /img/test.png {
return 1;
}
location /img/test.png {
return 2;
}
location ^~/img/ {
return 3;
}
location = / {
return 4;
}
location / {
return 5;
}