Nginx正则及location匹配

一、Nginx location规则匹配

^~    标识符匹配后面跟-一个字符串。匹配字符串后将中止对后续的正则表达式进行匹配,如location ^~ /images/ , 在匹配了/images/这个字符串后就中止对后续的正则匹配

=   精准匹配,如location=/,只会匹配url为/的请求。
~   区分大小写的匹配。
~*    不区分大小写的匹配。
!~     对区分大小写的匹配取非。
!~*    对不区分大小写的匹配取非。
/     通用匹配,若是没有其它匹配,任何请求都会被匹配到
 匹配顺序优先级:
 
(location =)> (location 完整路径)> (location ^~ 路径) > (location ~,~*正则顺序) >(location 部分起始位置) > (/)
 二、正则表达式
*:重复前面的字符0次或屡次
?:重复前面的字符0次或1次
+:重复前面的字符1次或屡次
.:匹配除换行符之外的任意一个字符
(a|b):匹配a或b
^:以...开头
$:以...结尾
{n}:重复前面的字符n次
{n,}:重复前面的字符n次或更屡次
{n,m}:重复前面的字符n-m次
*?:重复前面的字符0次或屡次,但尽量少重复
+?:重复前面的字符1次或屡次,但尽量少重复
??:重复前面的字符0次或1次,但尽量少重复
{n,m}?:重复前面的字符n-m次,但尽量少重复
{n}?:重复前面的字符n次以上,但尽量少重复
三、正则表达式补充
\W:匹配任意不是字母,数字,下划线,汉字的字符(特殊符号)
\S:匹配任意不是空白符的字符
\D:匹配任意非数字的字符
\B:匹配任意不是单词开头或结尾的位置
[a]:匹配单个字符a
[a-z]:匹配a-z小写字符的任意一个
[^a]:匹配除了a之外的任意字符
[^abc]:匹配除了abc这几个字母之外的任意字符
四、Nginx location应用规则
先写一个location,后面匹配挑任意一个,加url的地址(网页路径)花括号里写最终要处理的动做
location [=|~|~*|^~|!~|!~*] /url/{...}
默认值:no
使用字段:server
location参数根据URL的不一样需求来进行匹配,可使用字符串与正则表达式匹配
例:location ~* .*\.jsp$ {
  proxy_pass http://tomcat_server;
}
(1)
http://www.a.com/
location = / {
#精准匹配 / ,主机名后面不能带任何的字符串
[configuration A ]
}
(2)
location / {
#由于全部的地址都以 / 开头,因此这条规则将匹配到全部的请求
#可是正则和最长字符串会优先匹配
[configuration B ]
}
(3)
location / documents/ {
#匹配任意以documents开头的地址,匹配符合之后,还要继续往下搜索
#只有后面的正则表达式没有匹配到时,才会采用这一条
[configuration C ]
}
(4)
location ~  / documents/Abc {
#匹配任意以documents开头的地址,匹配符合之后,还要继续往下搜索
#只有后面的正则表达式没有匹配到时,才会采用这一条
[configuration CC ]
}
(5)
location ^~ /images/ {
#匹配任意以images开头的地址,匹配符合之后,还要继续往下搜索
[configuration D ]
}
(6)
location ~*\.(gif|jpg|jpeg) {
#匹配全部以gif,jpg或jpeg结尾的请求
#然而,全部的请求/images/ 下的图片会被config D 处理,由于 ^ ~ 到达不了这一条正则
[configuration E ]
}
(7)
location  /images/ {
#字符匹配到 /images/,继续往下,会发现 ^~ 存在
[configuration F ]
}
(8)
location /images/abc {
#最长字符串匹配到 /images/abc,继续往下,会发现 ^~ 存在
[configuration G ]
}
六、实验(须要两台虚拟机) 第一台虚拟机确保安装nginx 第二台虚拟机上安装确保搭建好LAMP (1)在第二台虚拟机上:[root@localhost ~]# rpm -q nfs-utils rpcbind      //查看有没有安装nfs-utils rpcbind这两个软件包 [root@localhost ~]# mkdir /wwwroot         //建立一个文件 [root@localhost ~]# vim /etc/exports      //添加如下内容 /wwwroot 192.168.200.112  (ro)  [root@localhost ~]# systemctl restart rpcbind [root@localhost ~]# systemctl restart nfs (2)[root@localhost ~]# cd /wwwroot/           //在里面添加一张图片 rz (3)在第一台虚拟机上: [root@localhost ~]# cd /usr/local/nginx/html/images/          //查看一下里面有在第二台虚拟机上添加的图片 [root@localhost html]# vim index.html          //添加如下内容(把图片加进去) <img src="images/wyb.jpg" /> (4)在网页上访问:192.168.200.112
相关文章
相关标签/搜索