ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Nginx-那些事儿05

2022-07-18 02:31:29  阅读:178  来源: 互联网

标签:匹配 05 Nginx 大小写 location 开头 规则 test 事儿


nginx-location匹配规则
是根据ip+port来匹配的,/后边表示匹配的路径(例如:/Test相当于后台存在一个Test控制器(重点)

语法规则:

# = 开头表示精准匹配
# ~ 大小写敏感
# ~* 忽略大小写
# ^~ 只需匹配uri开头
# @ 定义一个命名的 location,在内部定向时使用,例如 error_page
location  [ = | ~ | ~* | ^~ ] /uri/ { ... }
location @name { ... }

1、 任意匹配

# 匹配所有请求,但是正则和最长字符串会优先匹配
location / {
    #规则
}

2、“=” 精准匹配

# 精确匹配 / ,可以匹配类似 `http://www.example.com/` 这种请求,'/'后不能带有任何内容
location = / {
	   #规则
}

3、“~” 大小写敏感

location ~ /Test/ {
	 #规则
}

#可以匹配    http://www.test.com/Test/
#不可以匹配    http://www.test.com/test/

4、 “~*” 大小写忽略

# ~* 会忽略uri部分的大小写
location ~* /Test/ {
   #规则
} 
#可以匹配    http://www.test.com/test/

5、 “^~” 只匹配uri开头

#以 /test/ 开头的请求,都可以匹配上  区分大小写
location ^~ /test/ {   
	#规则
}
#可以匹配    http://www.test.com/test/

6、“@” 命名匹配

#以 /img/ 开头的请求,如果链接的状态为 404。则会匹配到 @img_err 这条规则上。
location /img/ {
	 error_page 404 @img_err;
}
location @img_err {
  # 规则
}

7、以内容结尾匹配

# 匹配所有以 gif,jpg或jpeg 结尾的请求   根据后缀来做规则; 请求图片   特殊格式的文件
location ~* \.(gif|jpg|jpeg)$ {
	 #规则
}

8、location匹配优先级

在配置中需要注意的一点就是location的匹配规则和优先级

  • = 开头表示精确匹配
  • ^~ 开头表示uri以某个常规字符串开头,不是正则匹配;
  • ~ 开头表示区分大小写的正则匹配;
  • ~* 开头表示不区分大小写的正则匹配;
  • / 通用匹配, 如果没有其它匹配,任何请求都会匹配到;

9、location的匹配流程

A、判断是否精准匹配,如果匹配,直接返回结果并结束搜索匹配过程。

B、判断是否普通匹配,如果匹配,看是否包含^~前缀,包含则返回,否则记录匹配结果,(如果匹配到多个location时返回或记录最长匹配的那个)

C、判断是否正则匹配,按配置文件里的正则表达式的顺序,由上到下开始匹配,一旦匹配成功,直接返回结果,并结束搜索匹配过程。

D、如果正则匹配没有匹配到结果,则返回步骤B记录的匹配结果。

注意:

A、多个普通匹配的location时,和location的顺序无关,总是匹配所有的location,然后取匹配最长的location作为结果

B、多个正则匹配的location时,和顺序有关,从上到下依次匹配,一旦匹配成功便结束,直接返回结果。

标签:匹配,05,Nginx,大小写,location,开头,规则,test,事儿
来源: https://www.cnblogs.com/RaymonGoGo/p/16489065.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有