用户工具

站点工具


docs:ingress:nginx:d1_nginx_config

location语法

location [=|~|~*|^~] pattern {
 
}

参数解释:

  • = 开头表示精确匹配
  • ^~开头表示uri以某个常规字符串开头,理解为匹配url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
  • ~ 开头表示区分大小写的正则匹配
  • ~*开头表示不区分大小写的正则匹配
  • !~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则
  • / 通用匹配,任何请求都会匹配到。

location匹配类型 location匹配之精准匹配

location = / {
   #规则A
}
location = /login {
   #规则B
}
location匹配之正则匹配
location ^~ /static/ {
   #规则C
}
location ~ \.(gif|jpg|png|js|css)$ {
   #规则D
}
location ~* \.png$ {
   #规则E
}
location !~ \.xhtml$ {
   #规则F
}
location !~* \.xhtml$ {
   #规则G
}
location匹配之一般匹配
location / {
   #规则H
}

location配置优先级

  1. 先判断精准匹配,如果匹配,立即返回结果并结束解析过程
  2. 然后,判断普通命中没如果有多个命中,记录最长的匹配结果
  3. 再然后判断正则表达式的解析过程,按配置里的正则表达式顺序为准,由上到下开始匹配,一旦匹配成功立即返回结果并结束解析过程。
  4. 通过上面的分析我们可以知道:
  5. 普通匹配与顺序无关,因为按照匹配的长短来取匹配结果。
  6. 正则匹配与顺序有关,因为是从上往下匹配。(首先匹配,取其之。结束解析过程)
docs/ingress/nginx/d1_nginx_config.txt · 最后更改: 2020/09/25 21:49 (modify by Amos)