nginx location 优先级

location 顺序/优先级:
     location = > location 完整路径 > location ^~ 路径 > location ~,~* 正则顺序 > location 部分起始路径 > /

location  = / {
  # 精确匹配 / ,主机名后面不能带任何字符串
  [ configuration A ]
}
location  / {
  # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
  # 但是正则和最长字符串会优先匹配
  [ configuration B ]
}
location /documents/ {
  # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
  # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
  [ configuration C ]
}
location ~ /documents/Abc {
  # 匹配任何以 /documents/Abc 开头的地址,匹配符合以后,还要继续往下搜索
  # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
  [ configuration CC ]
}
location ^~ /images/ {
  # 匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。
  [ configuration D ]
}
location ~* \.(gif|jpg|jpeg)$ {
  # 匹配所有以 gif,jpg或jpeg 结尾的请求
  # 然而,所有请求 /images/ 下的图片会被 config D 处理,因为 ^~ 到达不了这一条正则
  [ configuration E ]
}
location /images/ {
  # 字符匹配到 /images/,继续往下,会发现 ^~ 存在
  [ configuration F ]
}
location /images/abc {
  # 最长字符匹配到 /images/abc,继续往下,会发现 ^~ 存在
  # F与G的放置顺序是没有关系的
  [ configuration G ]
}
location ~ /images/abc/ {
  # 只有去掉 config D 才有效:先最长匹配 config G 开头的地址,继续往下搜索,匹配到这一条正则,采用
    [ configuration H ]
}
location ~* /js/.*/\.js {
  # 不区分大小写匹配
  [ configuration I ]
}

= :开头表示精确匹配; 如: A 中只匹配根目录结尾的请求,后面不能带任何字符串;
^~ :开头表示uri以某个常规字符串开头,不是正则匹配;
~ :开头表示区分大小写的正则匹配;
~* :开头表示不区分大小写的正则匹配;
/ :通用匹配, 如果没有其它匹配,任何请求都会匹配到;

原文地址:https://www.cnblogs.com/imcati/p/11746927.html

时间: 2024-10-13 01:29:34

nginx location 优先级的相关文章

nginx location优先级详解

nginx中location有几种: 1.前缀,可以有=或^~修饰,比如 location  /       /开头的 location /img/     /img/开头的 location = /a.htm      刚好/a.htm location ^~ /d    匹配后不再检查正则表达式location.注意这个意思不是非正则表达式!除了~开头其他都是非正则表达式,也就是前缀匹配 2.正则表达式,固定~或~*(不区分大小写)开头,比如: location ~  \.html$ loc

nginx——location 优先级

一. location 的匹配符1.等于匹配符:=等于匹配符就是等号,特点可以概括为两点:精确匹配不支持正则表达式2.空匹配符空匹配符的特点是:匹配以指定模式开始的 URI不支持正则表达式3.正则匹配符:~正则匹配符是可以使用正则表达式的匹配符.不过这里要强调的是, 一般来说~是指:区分大小写的正则匹配而~*表示:         不区分大小写的正则匹配但是对于一些对大小写不敏感的操作系统,这两者没有区别. 二.优先级的实例 location ~ ^/poechant$ { return 400

nginx location在配置中的优先级

location表达式类型 ~     表示执行一个正则匹配,区分大小写 ~*    表示执行一个正则匹配,不区分大小写 ^~    表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location. =     进行普通字符精确匹配.也就是完全匹配. @     “@” 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files location优先级说明 在nginx的location和配置中location的顺序没有太大关系.正loca

nginx location 规则优先级

一 nginx  location 匹配命令 ~   #表示执行一个正则匹配,区分大小写 ~*  #表示执行一个正则匹配,不区分大小写 ^~  #表示普通字符匹配,如果该选项匹配,只匹配该选项, 不匹配别的选项,一般用来匹配目录 =   #进行普通字符精确匹配 二 nginx location 匹配优先级(与location在配置文件中的顺序无关) 1=  精确匹配.如果发现精确匹配,nginx停止搜索其他匹配模式. 2    普通字符匹配,正则表达式规则和长的块规则将被优先和和查询匹配,也就是

nginx location规则优先级

nginx服务器在server块的多个location块中搜索是否有标准uri和请求字符串匹配,如果有多个可以匹配,就记录下来匹配度最高的一个.然后,服务器再用location块中的正则uri和请求字符串匹配,当第一个正则uri匹配成功,结束搜索,并使用这个location块处理此请求:如果正则匹配全部失败,就使用刚才记录的匹配度最高的location块处理此请求. location 优先级        nginx 的配置如下 server {         listen       80;

NGINX location 在配置中的优先级

location表达式类型 ~ 表示执行一个正则匹配,区分大小写 ~* 表示执行一个正则匹配,不区分大小写 ^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location. = 进行普通字符精确匹配.也就是完全匹配. @ 它定义一个命名的 location,使用在内部定向时,例如 error_page, try_files location优先级说明 在nginx的location和配置中location的顺序没有太大关系.正location表达式的类型有关.相同类型的表达式

nginx location的优先级

原来一直以为location的优先级是先后顺序,结果有次项目中傻眼了,赶紧百度一下,下面的内容参考了这个链接 location表达式类型 ~ 表示执行一个正则匹配,区分大小写~* 表示执行一个正则匹配,不区分大小写^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location.= 进行普通字符精确匹配.也就是完全匹配.@ "@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files location优先级说明 在ngi

掌握nginx的location优先级

前言近几年nginx在企业上的应用很广泛,但很多朋友还是不知道nginx的location优先级,如果不能清晰的掌握nginx的location优先级,就会在配置nginx的时候引起错误的跳转,错误的跳转往往就是一次严重的线上事故.因此,掌握nginx的location优先级非常重要. 先来一个最简单的nginx配置 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default

nginx location配置

nginx location配置 location在nginx中起着重要作用,对nginx接收到的请求字符串进行处理,如地址定向.数据缓存.应答控制.代理转发等 location语法 location [=|~|~*|^~] uri {...} []部分是匹配类型,可以没有,其中各项含义: (1)= 精准匹配,请求字符串必须和uri完全相同时匹配成功 (2)~ 区分大小写的正则匹配 (3)~* 不区分大小写的正则匹配 (4)^~ 注意这个不是正则匹配,表示uri以普通字符串开头, (5)空 表示