Nginx Location匹配规则
Posted quail2333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx Location匹配规则相关的知识,希望对你有一定的参考价值。
前言:location是nginx配置中的一个指令,用于访问的URL匹配,而在这个location中所配置的每个指令将会启动不同的 模块去完成相应的工作。
理论部分
一、location语法:
location [=|~|~*|^~] uri …
其中,方括号中的四种标识符是可选项,用来改变请求字符串和uri的匹配方式。uri是待匹配的请求字符串,可以是不包含正则的字符串,这种模式被称为“标准的uri";也可以包含正则,这种模式被称为"正则uri"。例如:
二、四种可选标识符:
标识符 | 描述 |
= | 精确匹配:用于标准uri前,要求请求字符串和uri严格匹配。如果匹配成功就停止匹配,立即执行该location里面的请求。 |
~ | 正则匹配:用于正则uri前,表示uri里面包含正则,并且区分大小写。 |
~* | 正则匹配:用于正则uri前,表示uri里面包含正则,不区分大小写。 |
^~ | 非正则匹配;用于标准uri前,nginx服务器匹配到前缀最多的uri后就结束,该模式匹配成功后,不会使用正则匹配。 |
无 | 普通匹配(最长字符匹配);与location顺序无关,是按照匹配的长短来取匹配结果。若完全匹配,就停止匹配。 |
操作案例部分
一、环境准备
为了方便验证各匹配标识符,我们借助第三方模块 echo模块进行操作。安装步骤向右看??echo-nginx-module的安装、配置、使用
二、匹配标识符案例
1. “=”精准匹配
location = /news/ echo "test1";
[[email protected] quail]# curl 192.168.249.132/news/ test1
2. "~"区分大小写正则匹配
location ~ \\.(html) echo ‘test2‘; location ~ \\.(htmL) echo ‘test3‘;
[[email protected] quail]# curl 192.168.249.132/index.html test2 [[email protected] quail]# curl 192.168.249.132/index.htmL test3
3. “~*”不区分大小写的正则匹配
location ~* \\.(html) echo ‘test4‘;
[[email protected] quail]# curl 192.168.249.132/index.htmL test4 [[email protected] quail]# curl 192.168.249.132/index.html test4
4. “^~”不进行正则匹配的标准匹配,只匹配前缀
location ^~ /index/ echo ‘test5‘;
[[email protected] quail]# curl 192.168.249.132/index/ test5 [[email protected] quail]# curl 192.168.249.132/index/heihei test5 [[email protected] quail]# curl 192.168.249.132/index/asdnmkalsjd test5
5.普通匹配
location / echo ‘test6‘;
[[email protected] quail]# curl 192.168.249.132 test6
以上是关于Nginx Location匹配规则的主要内容,如果未能解决你的问题,请参考以下文章