Location正则匹配 nginx


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时
这2段location 与此同时出现时如下所示,那麼哪段配备会起效呢?
server {
listen80;
server_name www.benet.com;
index index.html;
location / {
root /web;
}
location /bbs {
root /web;
}
结果便是,
当客户请求的(/bbs)url与此同时匹配到2段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 {
【Location正则匹配 nginx】return 400;
}
location ~* /bbs {
return 500;
}
网页页面回到错误报告400
随后将2段配备替换一下部位
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結果
以上便是我现在的共享了,期待可以作用到大伙儿 。