Nginx中location规则详解

一.前言

  • Location 指令是http模块中的配置指令之一,Location是Nginx中的块级指令(block directive),通过配置Location指令块,可以决定客户端发过来的请求URI如何处理(是映射到本地文件还是转发出去)及被哪个location处理

  • Nginx的location就相当于url路由,Nginx根据location的配置来决定究竟如何处理一个请求

二.location语法

1.语法规则

  1. = 开头表示精确匹配
  2. ^~ 开头表示uri以某个常规字符串开头,理解为匹配url路径即可(非正则)
  3. ~ 开头表示区分大小写的正则匹配
  4. ~* 开头表示不区分大小写的正则匹配
  5. / 通用匹配,任何请求都会匹配到

三.优先级测试

1.location参数匹配解释

1.1 “=” 精确匹配
内容要求表达式完全一致才匹配成

location = /abc/ {
  .....
 }       
# 只匹配http://abc.com/abc
#http://abc.com/abc [匹配成功]
#http://abc.com/abc/index [匹配失败]

1.2 “^~” 表示普通字符串匹配上以后不再进行正则匹配

location ^~ /index/ {
  .....
}
#以 /index/ 开头的请求,都会匹配上
#http://abc.com/index/index.page  [匹配成功]
#http://abc.com/error/error.page [匹配失败]

1.3 “~” 执行正则匹配,区分大小写

location ~ /Abc/ {
  .....
}
#http://abc.com/Abc/ [匹配成功]
#http://abc.com/abc/ [匹配失败]

1.4 “~*” 执行正则匹配,忽略大小写

location ~* /Abc/ {
  .....
}
# 则会忽略 uri 部分的大小写
#http://abc.com/Abc/ [匹配成功]
#http://abc.com/abc/ [匹配成功]

1.5 “/” 不加任何规则时,默认是大小写敏感,前缀匹配

location /index/ {
  ......
}
#http://abc.com/index  [匹配成功]
#http://abc.com/index/index.page  [匹配成功]
#http://abc.com/test/index  [匹配失败]
#http://abc.com/Index  [匹配失败]
# 匹配到所有uri

2.测试优先级

default_type	:默认类型
return 			:返回
text/html		:表示使用html htm shtml解析
return 200 "location /";	:返回给浏览器200状态码,并且打印出"location /"

server区域

server {
   listen 80;
   server_name   location.com;
   location /  {
      default_type  text/html;
      return 200 "location /";
   }
   
   location = / {
     default_type  text/html;
     return 200 "location =";
   }
   
  # location ^~ / {        # 先注释,否则校验失败,无法重新加载
  #   default_type  text/html;
  #   return 200 "location ^~";
  # }

    location ~ /  {
      default_type  text/html;
      return 200 "location ~";
   }
   
    location ~* / {
     default_type  text/html;
     return 200 "location ~*";
   }
}

优先级

# 优先级最高的符号 =
[root@tdm ~]# curl  location.com
location =

# 注释掉精确匹配,重启nginx
[root@tdm ~]# curl  location.com
location ^~

# 注释掉^~,重启nginx
[root@tdm ~]# curl  location.com
location ~

#注释掉~,重启nginx
[root@tdm ~]# curl  location.com
location ~*

3.结论

匹配符匹配规则优先级
=精确匹配1
^~以某个字符开头2
~区分大小写的正则匹配3
~*不区分大小写的正则表达式4
/通用匹配,任何请求都会匹配到5
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值