视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ppt布尔运算工具在哪里 input disabled属性 女网名简单大方有内涵 js charcodeat js获取当前url layer.open传参数到子页面 ipv6地址类型 一个圈一个竖杠是什么符号 input默认值 electron打包成exe 浏览器cookie要不要打开 图像采集是什么意思 input获取焦点 0x80240017未指定错误 tinfoil使用教程 js object.assign python九九乘法表代码 valueerror是什么错误 16进制颜色转换rgb mysql json_extract split函数python php获取当前时间 sql正则表达式 python正则表达式提取文本 世界三大记忆法 一证通查怎么查自己名下手机号 vue async mysql时间格式转换 js 获取当前url sql 正则表达式 微信能发消息,不能视频聊天 js location 电话号码正则表达式 json格式化工具有哪些 dg分区工具怎么用 vue 时间格式化 linux安装anaconda3 vscode输出中文乱码 anaconda 安装pytorch elasticsearch安装教程
nginx location 正则匹配
2022-01-22 15:47:19 责编:李赢赢
文档

nginx的location正则匹配是什么呢?不知道的小伙伴来看看小编今天的分享吧!

Location根据类型分为两种:普通配置和正则匹配

一、 普通配置

普通location根据使用方法又分为两种,格式如下:

1. location  / {

命令序列

}

解释:括号中定义的表示对当前路径及子路径下的所有对象有效。“优先级最低”

用户所有的请求都能被它匹配到。

例子:

location / {  

 root /web; 

相应策略     

}

这说明网页根目录在/web

访问的时候直接http://127.0.0.1或是域名就可以了

用户所有的请求都能被它匹配到

location /bbs {

root "/web";

相应策略

}

这就说明网页根目录是位于  /web/bbs

访问的时候直接http://127.0.0.1/bbs就可以了

当用户访问

http://127.0.0.1/bbs/

或是

http://127.0.0.1/bbs/子路径

的时候才能被上边的路径匹配到。

问题:当用户访问http://127.0.0.1/bbs/a.html时

这两段location 同时存在时如下,那么哪段配置会生效呢?

server {

listen       80;

server_name  www.benet.com;

index index.html;

location  / {

root /web;

}

location  /bbs {

root /web;

}

结论就是,

当用户请求的(/bbs)url同时匹配到两段location时,

最大前缀生效(location /bbs生效)

如果没有这段(location /bbs) 第一段生效。

第一段相当于默认策略,因为location / 包含所有的请求,所有的请求都是以  ”/” 开始的

2. location = /路径 {

命令序列

}

解释:括号中定义的表示对当前路径有效,子路径不生效(精确匹配指定的路径不包括子路径)。“它的优先级最高。” 

例子:

location = /prefix {

}

也就是用户访问www.benet.com/prefix能被上边的location匹配到,它只匹配"/prefix",

"/"下的子路不匹配。

用户访问www.benet.com/prefix/a 就不能被它匹配到

优先级最高:指的是一旦匹配到此location ,立即生效。其它location无论是否匹配到请求都不生效。

例子:

location  /prefix/ {

root /;

}

location  = /prefix/  {

return 500;

}

二、 正则匹配

正则匹配也分为两种:

1. location ~ URI {}

~匹配的文件是区分字符 大小写的

2.location ~* URI {} :

~*匹配的文件是不区分字符大小的

正则匹配是按照正则location编写的顺序生效的,一旦匹配成功即停止匹配到后续的location。

例子:

location  ~ /bbs {

return 400;

}

location ~* /bbs {

return 500;

}

网页返回错误信息400

然后将两段配置调换一下位置

location ~* /bbs {

return 500;

}

location  ~ /bbs {

 return 400;

}

三、匹配顺序和生效顺序

匹配顺序和生效顺序是两个概念

当配置中出现多个locaton并且普通和正则都有,那么

1、匹配顺序是:

用户请求的URL

(1)先匹配普通location

普通location在匹配是按照编辑顺序匹配

(2)在匹配正则location

正则location在匹配时按照编辑顺序匹配

但是正则和普通locaiton不按照编辑顺序匹配

2、生效顺序

当普通和正则都存在的情况下,遵循以下原则

1.nginx开始按照编辑顺序依次匹配普通location

(1)如果匹配过程中匹配到了

"location =" :nginx会立即生效即停止后续的匹配

(2)如果没有"locaiton ="话,

如果匹配到"locatin ^~"。会停止后续的正则匹配

然后最大前缀locaiton生效

最后是location / 生效

(3) 如果以上两种location都不存在的话

nginx会匹配所有location后看后续有没有正则locaion

如果后续没有正则locaiton

然后最大前缀locaiton生效

最后是location / 生效

如果后续还有正则location

一旦匹配成功一条正则locaion,这条会生效,并且会停止后续的正则匹配,还会会覆盖前边的普通location结果

以上就是小编今天的分享了,希望可以帮助到大家。

下载本文
显示全文
专题ppt布尔运算工具在哪里ppt布尔运算工具在哪里专题input disabled属性input disabled属性专题女网名简单大方有内涵女网名简单大方有内涵专题js charcodeatjs charcodeat专题js获取当前urljs获取当前url专题layer.open传参数到子页面layer.open传参数到子页面专题ipv6地址类型ipv6地址类型专题一个圈一个竖杠是什么符号一个圈一个竖杠是什么符号专题input默认值input默认值专题electron打包成exeelectron打包成exe专题浏览器cookie要不要打开浏览器cookie要不要打开专题图像采集是什么意思图像采集是什么意思专题input获取焦点input获取焦点专题0x80240017未指定错误0x80240017未指定错误专题tinfoil使用教程tinfoil使用教程专题js object.assignjs object.assign专题python九九乘法表代码python九九乘法表代码专题valueerror是什么错误valueerror是什么错误专题16进制颜色转换rgb16进制颜色转换rgb专题mysql json_extractmysql json_extract专题js queryselectorjs queryselector专题js assignjs assign专题js endswithjs endswith专题mysql 替换函数mysql 替换函数专题js lastindexofjs lastindexof专题vue main.jsvue main.js专题mysql text类型mysql text类型专题object.values()的用法object.values()的用法专题js callbackjs callback专题js set集合js set集合专题python 获取url参数专题nginx获取url参数专题js hash专题python dns解析专题grok表达式专题rsa.js专题rsa js专题js rsa专题python ddns专题python dns专题dns python专题python 获取端口专题js hmac专题python 请求url专题nginx自定义变量专题nginx 返回字符串专题nginx 字符串替换专题nginx lua专题lua nginx专题nginx jsonp专题