nginx路径匹配优先级(Nginx的location的常见规则优先级问题)
nginx路径匹配优先级
Nginx的location的常见规则优先级问题目录
- 一、Location / 匹配
- 二、Location = / 匹配
locaiton有四种类型的匹配规则,分别为完全匹配(=)、前缀普通匹配(^~)、正则表达式匹配(~或者~*)、普通匹配
规则
- 等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项
- 前缀普通匹配(^~)优先级次之。不支持正则表达式。使用前缀匹配,如果有多个location匹配的话,则使用表达式最长的那个
- 正则表达式类型(~ ~*)的优先级次之。一旦匹配成功,则不再查找其他匹配项
- 常规字符串匹配,如果有多个location匹配的话,则使用表达式最长的那个
说明
- 先判断精准命中,如果命中,立即返回结果并结束解析过程
- 若未结束,判断前缀普通命中,如果有多个命中,使用表达式“最长”的命中结果,结束解析过程
- 若未结束,继续判断正则表达式的匹配,按正则表达式顺序为准,由上至下一旦匹配成功1个,立即返回结果,并结束解析过程
- 若未结束,继续普通命中,普通命中和前缀普通命中相似,顺序无所谓,按照location表达式的长短来确定命中结果
Location,用来快速进行资源定位,定义不同方式来处理或解决url请求,一般有:/ , = /, ~, ~* ,^~
优先级是:(location = /)>(localtion^~)>(location ~| ~* )>(location /)
其中,~ 与 ~*,谁在上面先匹配谁.
# "/" 是直接到nginx发布目录/usr/local/nginx/html/里来查资源,比如location.html location / { root html; index index.html index.htm; }
在发布目录里创建location.html文件,内容为:this is location.html。
执行172.16.0.9/location.html时,服务器发布目录里找这个location.html文件,并把结果this is loction.html返回出来,如下:
root@backupserver:/usr/local/nginx/html# ls 50x.html index.html root@backupserver:/usr/local/nginx/html# echo "this is location.html" > ./location.html root@backupserver:/usr/local/nginx/html# ls 50x.html index.html location.html root@backupserver:/usr/local/nginx/html# /usr/local/nginx/sbin/nginx -s reload root@backupserver:/usr/local/nginx/html# curl 172.16.0.9/location.html this is location.html root@backupserver:/usr/local/nginx/html#
精准定位 一般用来匹配某个文件,优先级高于 /
比如:
在nginx配置文件中增加一个location = / ,定位到/data目录。如下:
server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { autoindex on; root html; index index.html index.htm; } location = /location.html { root /data/; index index.html; }
重启Nginx服务,测试:
1、先不在/data/目录创建location.html。
可以看到,报404错误。这是因为,= / 优先级高于/ ,服务器去第二个location里寻找location.html这个文件,而不是去第一个location里找。由于第二个location指定的目录是/data,/data目录下没有location.html文件
在/data目录下创建location.html文件
root@backupserver:/usr/local/nginx/html# ls /data/ www root@backupserver:/usr/local/nginx/html# echo "this is other location.com" > /data/location.html root@backupserver:/usr/local/nginx/html# ls 50x.html index.html location.html root@backupserver:/usr/local/nginx/html# curl 172.16.0.9/location.html this is other location.com root@backupserver:/usr/local/nginx/html#
上面可以看到,访问 服务器是,服务器首先去location = /里面找,即使它在另一个location下面。精准匹配优先级是最高的,它不论是在配置文件内容上面还是下面,服务器首先去找精准匹配的内容
除以精准匹配,还有~ ,~* ,^~
~是对大小写敏感,匹配时严格大小写
~* 是对大小写不敏感,匹配时不分大小写。
^~用来匹配以uri开头,匹配成功以后,会停止搜索后面的正则表达式匹配。
以上优先最高的是精准匹配。location = /,其次是:^,然后是 和~* 这两种看准在配置文件内容上面,就先匹配谁,优先级最低的是 /
以上规则在使用nginx时会被广泛使用,比如多台服务器做网站动静分离时:
location ~ .*\.(html|htm|js|css|txt.jpg" alt="nginx路径匹配优先级(Nginx的location的常见规则优先级问题)" border="0" />
到此这篇关于Nginx的location的常见规则优先级的文章就介绍到这了,更多相关Nginx location规则优先级内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- nginx的最大并发(nginx限制并发连接请求数的方法)
- nginx日志请求状态(Nginx设置日志打印post请求参数的方法)
- nginx为什么要配置https(Nginx配置Https安全认证的实现)
- nginx给需要转发的链接添加参数(Nginx 根据URL带的参数转发的实现)
- nginx结构图解(详解Nginx 工作原理)
- nginx优化安全设置(nginx优化的六点方法)
- 如何设置nginx使用ip访问(nginx基于域名,端口,不同IP的虚拟主机设置的实现)
- nginx反向代理多个server(Nginx反向代理多个服务器的实现方法)
- 服务器启动nginx服务的命令(Nginx服务器添加Systemd自定义服务过程解析)
- linux安装nginx启动页面访问不到(apache,nginx上传目录无执行权限的设置方法)
- 内网nginx配置https详解(Nginx如何配置Http、Https、WS、WSS的方法步骤)
- thinkphp静态怎么设置(浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法)
- nginx反向代理通俗讲解(nginx 反向代理之 proxy_pass的实现)
- nginx配置两个前端web服务(你真的了解如何将Nginx配置为Web服务器吗)
- nginx配置404状态码(解决Nginx 配置 proxy_pass 后 返回404问题)
- nginx反向代理性能(nginx作grpc的反向代理踩坑总结)
- 袁冰妍轧戏 拍《琉璃》的同时还在拍《将夜》,难怪被骂演技差(拍琉璃的同时还在拍将夜)
- 刚红就耍大牌,《琉璃》角色滤镜碎一地,心疼工作人员(琉璃角色滤镜碎一地)
- 袁冰妍郑业成这对可以处,有脸红情话他们是真的敢说(袁冰妍郑业成这对可以处)
- 《祝卿好》台词又土又甜,就喜欢这么直接的恋爱(祝卿好台词又土又甜)
- 大女主 汤唯垂青电视圈,搭档朱亚文出演《大明皇妃孙若微传》(汤唯垂青电视圈)
- 红色代表什么(红色代表什么情感和含义)
热门推荐
- react基础知识入门(浅谈React 的引入)
- python语言支持多态(Python实现多态、协议和鸭子类型的代码详解)
- sqlserverdatetime时区(解析SQL Server中datetimeset转换datetime类型问题)
- mybatis为什么还用mysql(关于MyBatis连接MySql8.0版本的配置问题)
- python3.7手册中文版(Python3.4解释器用法简单示例)
- CSS优雅降级和渐进增强
- idea如何运行springboot项目(使用idea搭建springboot initializer服务器的问题分析)
- jquerycss3轮播案例(CSS3实现列表无限滚动/轮播效果)
- docker的postgres镜像包(Docker中运行PostgreSQL并推荐几款连接工具)
- nginx配置详细讲解(Nginx服务快速入门教程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9