Nginx Location处理逻辑(优先级)权威解读

Nginx location directive分两种: prefix strings (就是路径名) and regular expressions(正则表达)。

prefix strings如:location /images

正则表达式以 ~(区分大小写)或者~*(不区分大小写)为前导(修饰符),如location ~ \.php$。

Nginx 对Location处理逻辑:

1.用uri测试所有的prefix strings;

2.Uri精确匹配到=定义的loacation,使用这个location,停止搜索;
3.匹配最长prefix string,如果这个最长prefix string带有^~修饰符,使用这个location,停止搜索,否则:
4.存储这个最长匹配;
5.然后匹配正则表达;
6.匹配到第一条正则表达式,使用这个location,停止搜索;

7.没有匹配到正则表达式,使用第4步存储的prefix string的location。

请注意第3步中的最长两个字。


举例:

nginx server配置如下:

server {
listen 80;
server_name m4 alias m4.ibm.com;
root /usr/shar/nginx/html;
#1
location = / {
return 500;
}


#2
location /a/1.html {
return 400;
}


#3
location ~ \.html {
return 401;
}


#4
location /a/b {
return 402;
}


#5
location ^~ /a {
return 403;
}


#6
location = /a/1.html {
return 404;
}
}


测试:

http://m4/a/1.html
404
精确匹配#6

http://m4/a/2.html
403
最长匹配#5,不再匹配正则表达式


http://m4/a/b/1.html
401
最长匹配#4,然后匹配#3正则表达式


http://m4/a/b/1.h
402
最长匹配#4,没有匹配的正则表达式


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值