nginx location在配置中的优先级

location表达式类型

~     表示执行一个正则匹配,区分大小写

~*    表示执行一个正则匹配,不区分大小写

^~    表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他location。

=     进行普通字符精确匹配。也就是完全匹配。

@     “@” 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files

location优先级说明

在nginx的location和配置中location的顺序没有太大关系。正location表达式的类型有关。相同类型的表达式,字符串长的会优先匹配。

以下是按优先级排列说明:

第一优先级:等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。

第二优先级:^~类型表达式。一旦匹配成功,则不再查找其他匹配项。

第三优先级:正则表达式类型(~  ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。

第四优先级:常规字符串匹配类型。按前缀匹配。

location优先级示例

配置项如下:

location  = / {

# 仅仅匹配请求 /

[ configuration A ]

}

location  / {

# 匹配所有以 / 开头的请求。但是如果有更长的同类型的表达式,则选择更长的表达式。如果有正则表达式可以匹配,则

# 优先匹配正则表达式。

[ configuration B ]

}

location /documents/ {

# 匹配所有以 /documents/ 开头的请求。但是如果有更长的同类型的表达式,则选择更长的表达式。

#如果有正则表达式可以匹配,则优先匹配正则表达式。

[ configuration C ]

}

location ^~ /images/ {

# 匹配所有以 /images/ 开头的表达式,如果匹配成功,则停止匹配查找。所以,即便有符合的正则表达式location,也

# 不会被使用

[ configuration D ]

}

location ~* \.(gif|jpg|jpeg)$ {

# 匹配所有以 gif jpg jpeg结尾的请求。但是 以 /images/开头的请求,将使用 Configuration D

[ configuration E ]

}

请求匹配示例

/ -> configuration A

/index.html -> configuration B

/documents/document.html -> configuration C

/images/1.gif -> configuration D

/documents/1.jpg -> configuration E

注意,以上的匹配和在配置文件中定义的顺序无关。

觉得文章有用?立即:  和朋友一起 共学习 共进步!

建议继续学习:

  1. 配置Nginx+uwsgi更方便地部署python应用    (阅读:103514)
  2. 搜狐闪电邮箱的 Nginx/Postfix 使用模式    (阅读:23878)
  3. 解析nginx负载均衡    (阅读:11759)
  4. Nginx模块开发入门    (阅读:8272)
  5. nginx的配置文件    (阅读:7625)
  6. Cacti 添加 Nginx 监控    (阅读:7360)
  7. 检查nginx配置,重载配置以及重启的方法    (阅读:6956)
  8. 解决IE6从Nginx服务器下载图片不Cache的Bug    (阅读:6340)
  9. 奇怪的 Nginx 的 upstream timed out 引起响应 502    (阅读:6185)
  10. 解决 nginx 反向代理网页首尾出现神秘字符的问题    (阅读:6018)
时间: 2024-10-05 05:00:16

nginx location在配置中的优先级的相关文章

NGINX location 在配置中的优先级

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

Nginx Location指令配置及常用全局变量

在实践安装nginx的时候,不知道./configure是什么意思,这里特地记录一下. 在linux中./代表当前目录,属于相对路径../代表上一级目录,属于相对路径/代表根目录,/开头的文件都是绝对路径./configure的意思是执行当前目录下面的configure文件configure一般都有可执行的权限,如果没有的话,用./configure是不能执行的,但是可以这样执行:sh ./configure 使用--prefix参数指定nginx安装的目录 不指定prefix,则可执行文件默认

Nginx location的配置

网上看了很多nginx的location配置,写的感觉我看的都不是很明白.记录下自己的使用经验. 语法规则: location [=|~|~*|^~] /uri/ { … } 示例: location /user/ { proxy_pass http://user.example.com; } = -这些我们称为location修饰符,他们定义了匹配模式 /user/ 这些我们称之为 匹配路径 ## location修饰符 这个容易看的眼花缭乱,一个个捋清楚. =    等于号即要求请求的地址和

nginx location 的配置

一.基本语法:location [=|~|~*|^~] /uri/ { - } 二.分类: 1.基本location:以" = "或" ^~ "为前缀或者没有任何前缀的 /uri/ 2.正则location:以" ~ "或" ~* "为前缀的 /uri/ 基本location 又分为2种: 1)严格精确匹配:  " = " 2)最大前缀匹配: 无前缀 或者以" ^~ " 三.解释: 1)

nginx location的优先级

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

Nginx 正则匹配配置

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

Nginx Location和Rewrite深入剖析

Nginx Location和Rewrite深入剖析 Nginx Location Nginx由内核和模块组成,其中内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端的请求映射到一个location block,而location是Nginx配置中的一个指令,用于访问的URL匹配,而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作. location功能是由ngx_http_index_module模块提供的. location常放在serve

nginx location配置

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

nginx location配置(URL)

语法规则: location [=|~|~*|^~] /uri/ { … }= 表示精确匹配,这个优先级也是最高的^~ 表示uri以某个常规字符串开头,理解为匹配 url路径即可.nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格).~  表示区分大小写的正则匹配~* 表示不区分大小写的正则匹配(和上面的唯一区别就是大小写)!~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则/ 通用匹配,任何请求都会匹配到,默认