首页 > 系统相关 >nginx location规则以及优先级详解

nginx location规则以及优先级详解

时间:2023-04-20 10:48:19浏览次数:47  
标签:abc 优先级 nginx documents location images 匹配 configuration

nginx 配置文件里往往有多个location来区分不同的路径来执行不同的配置   在nginx配置文件中,location主要有这几种形式:

1、~   # 使用波浪符“ ~”区分大小写正则匹配,如 location ~ /abc { }
2、~*  #不区分大小写的正则匹配,如 location ~* /abc { }
3、^~  # 匹配路径的前缀,如果找到停止搜索,如 location ^~ /abc { }
4、=   #精确匹配 如 location = /abc { }
5、    #普通路径前缀匹配 如 location /abc { }

匹配优先级原则越精准越优先

优先级 4 > 3 > 2 > 1 > 5   解释一下各个格式: 复制代码
location = / {
# 精确匹配 / ,主机名后面不能带任何字符串
[ configuration A ]
}

location / {
# 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
# 但是正则和最长字符串会优先匹配
[ configuration B ]
}
复制代码 复制代码
location /documents/ {

# 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
# 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
[ configuration C ]
}

location ~ /documents/Abc {

# 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
# 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
[ 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 ]
}
复制代码

 

  再来分析一下A-H配置的执行顺序。 下面2个配置同时存在时 复制代码
location = / {
[ configuration A ]
}

location / {
[ configuration B ]
}
复制代码 此时A生效,因为=/优先级高于/   下面3个配置同时存在时: 复制代码
location  /documents/ {
[ configuration C ]
}

location ~ /documents/ {

[configuration CB]

}

location ~ /documents/abc {
[ configuration CC ]
}
复制代码     当访问的url为/documents/abc/1.html,此时CC生效,首先CB优先级高于C,而CC更优先于CB   下面4个配置同时存在时 复制代码
location ^~ /images/ {
[ configuration D ]
}

location /images/ {
[ configuration F ]
}

location /images/abc {
[ configuration G ]
}

location ~ /images/abc/ {
[ configuration H ]
}
复制代码   当访问的链接为/images/abc/123.jpg时,此时D生效。虽然4个规则都能匹配到,但^~优先级是最高的。   若^~不存在时,H优先,因为~/images/ > /images/   而/images/和/images/abc同时存在时,/images/abc优先级更高,因为后者更加精准   下面两个配置同时存在时 复制代码
location ~* \.(gif|jpg|jpeg)$ {
[ configuration E ]
}

location ~ /images/abc/ {

[ configuration H ]
}
复制代码

 

  当访问的链接为/images/abc/123.jpg时,E生效。因为上面的规则更加精准。     参考: 1、https://cloud.tencent.com/developer/article/1119218 2、http://haiyang.me/read.php?key=361

标签:abc,优先级,nginx,documents,location,images,匹配,configuration
From: https://www.cnblogs.com/gaoyanbing/p/17335903.html

相关文章

  • Nacos笔记(五):Nacos集群整合Nginx
    前言Nginx搭建,参考:Linux安装Nginx。1、Nginx配置添加nacos集群,调整端口与服务名,并设置代理,详情如下:   配置详情如下http{includemime.types;default_typeapplication/octet-stream;sendfileon;keepalive_timeout......
  • BOM-location
    1、介绍window.location对象,用于获得当前框架的地址(URL),并把框架地址重定向到新的页面。框架一般指浏览器,但有时也指iframe框架。(1)属性location.hostname返回web主机的域名location.pathname返回当前页面的路径和文件名location.port返回web主机的端口location.protoc......
  • 【Nginx】Nginx介绍及配置详解
    Nginx是什么Nginx("enginex")是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强。Nginx官网:http://nginx.org/Nginx安装Nginx官网下载地址:http://nginx.org/en/download.html其中nginx-1.23.4这一列是Linux版本。Windows安装解压Nginx压缩包后,目录如下:启动n......
  • Ingress nginx配置同一个域名不同的path访问不同的service
    配置同一个域名,不同的path,访问不同的service  #重写URL  #当您访问http://<ingress_ip>/foo/bar时,nginxingresscontroller将把请求路由到foo-service的80端口,并将原始请求的路径/foo/bar重写为/bar。    #nginx.ingress.kubernetes.io/rewrite-ta......
  • vue项目部署后 nginx配置重定向 大文件报错问题
      删除Nginx缓存文件试试?#rm-rf/usr/local/nginx/proxy_temp  注意proxy_busy_buffers_size是proxy_buffers的两倍,proxy_temp_file_write_size也要比proxy_buffers大。  ......
  • .Net 6.0 部署Linux+Nginx +PM2教程
    今天带大家将本地.Net6.0项目部署到Linux系统中,其中有用到Nginx反向代理和PM2进程管理工具,希望本偏文章能对你有所帮助,成为你成功路上的垫脚石!背景:在.Net5.0横空出世之后,.Net已经支持夸平台了,身为一名合格的码农,你敢说你不会用Linux?哈哈哈开个玩笑,因为工作最近......
  • 升级 .net 6后 The view 'Index' was not found. The following locations were searc
    升级.net6之后Razor页面出现找不到view的情况,原因是.net6默认移除了一些依赖包,如下完美解决web工程添加包Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilationstartup.cs里面加上Compilation引用builder.Services.AddControllersWithViews().AddRazorRuntimeCompilation(); ......
  • Debian Linux(帕拉迪)的方式:安装Linux并且部署主从nginx的步骤(自己实践过的)
    1. ./configure和make &&makeinstall分开执行,不要连起来,会报错。(其实可以不用&&,其实他们是可以分开执行的,分三步)&&是连接的意思, 2.linux安装nginx后没有sbin目录的解决方法 3.按照第二步修改后启动nginx报错的解决方法解决nginx启动报错nginx:[emerg]open(......
  • Nginx关于视频播放反向代理
    动机这几天为了服务器上搭建的FileBrowser播放视频浏览了一堆资料,现在基本可以做个总结了.FileBrowser是一个开源的基于Web的文件管理器,它支持在Web浏览器中访问和管理本地和远程服务器上的文件。它提供了一个简单易用的界面来上传,下载,编辑和共享文件。FileBrowser可以通过简......
  • window location跳转的几种方式与a链接跳转的总结
    1.window.location.href在当前页面跳转window.location.href='http://www.baidu.com'等于<ahref="http://www.baidu.com"></a>2.window.open在新页面跳转window.open('www.baidu.com')等于<ahref="http://www.baidu.com&qu......