用的Nginx正则表达式

网友投稿 1161 2022-09-29

用的Nginx正则表达式

常用的Nginx正则表达式^:匹配输入字符串的起始位置

$ :匹配输入字符串的结束位置

:匹配前面的字符零次或多次。如“o1" 能匹配"o”及“ol”、“o11"

+:匹配前面的字符一 次或多次。如“ol+"能匹配"ol”及“oll"、 “o11l", 但不能匹配"o”

? :匹配前而的字符零次或一 -次,例如“do (es) ?”能匹配"do"或者"does", ”?"等效于”{0,1}".:匹配除"\n”之外的任何单个字符,若要匹配包括“\n”在内的任意字符,请使用诸如“[. \n]"之类的模式

\ :将后而接着的字符标记为一-个特殊字符或一-个原义字符或- 一个向后引用。如“\n"匹配一个换行符,而"\$"则匹配“$”

\d :匹配纯数字[0-9] \s:空白符 \w:任意单词字符也包括下划线[A-Za-zA-z0-9_]

{n} :重复n次

{n,} :重复n次或更多次

{n,m} :重复n到m次

[ ]:定义匹配的字符范围

[c] :匹配单个字符c

[a-z] :匹配a-z 小写字母的任意一个

[a-zA-20-9] :匹配所有大小写字母或数字

( ) :表达式的开始和结束位置

| :或运算符

从功能看rewrite 和location 似乎有点像,都能实现跳转,主要区别在于rewrite 是在同yi一域名内更改获取资源的路径,而location是对一类路 径做控制访问或反向代理,还可以proxy_ pass到其他机器。

rewrite对访问的域名或者域名内的URL路径地址重写location对访问的路径做访问控制或者代理转发

location

location大致可以分为三类:精准匹配: location = / {...}一般匹配: location正则匹配: location ~ / {...}

location常用的匹配规则:=:进行普通字符精确匹配,也就是完全匹配。^~:表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其它location。~:区分大小写的匹配。~****:不区分大小写的匹配。!~:区分大小写的匹配取非。!~ :不区分大小写的匹配取非。

location 优先级:首先精确匹配 =其次前缀匹配 ^~其次是按文件中顺序的正则匹配~或 ~*然后匹配不带任何修饰的前缀匹配最后是交给/通用匹配

location示例说明:(1) location = / {}=为精确匹配/,主机名后而不能带任何字符串,比如访问/和/data,则/匹配,/data不匹配再比如location = /abc, 则只匹配/abc,/abc/或 /abcd不匹配。若location /abc, 则即匹配/abc、/abcd/ 同时也匹配/abc/.

(2) location / {}因为所有的地址都以/开头,所以这条规则将匹配到所有请求比如访问/和/data,则/匹配,/data 也匹配,但若后而是正则表达式会和最长字符串优先匹配(最长匹配)

(3) location /documents/ {}匹配任何以/documents/ 开头的地址,匹配符合以后,还要继续往下搜索其它location只有其它location后而的正则表达式没有匹配到时,才会采用这一条

(4) location /documents/abc { )匹配任何以/documents/abc 开头的地址,匹配符合以后,还要继续往下搜索其它location只有其它location后而的正则表达式没有匹配到时,才会采用这一条

(5) location ^~ /images/ {}匹配任何以/images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条

(6) location ~* . (gifljpgljpeg)$ {}匹配所有以gif、jpg或jpeg结尾的请求然而,所有请求/images/下 的图片会被location ^~ /images/处理,因为^~的优先级更高,所以到达不了这一- 条正则

(7) location /images/abc {}最长字符匹配到/ images/abc,优先级最低,继续往下搜索其它location, 会发现^~和~存在

(8) location ~ /images/abc {}匹配以/images/abc开头的,优先级次之,只有去掉location ^~ /images/才会采用这一条

(9) location /images/abc/1.html {}匹配/ images/abc/1.html文件,如果和正则location ~ / images/abc/1.html相比,正则优先级更高

优先级总结:(location =完整路径) > (location ^~路径) > (location ~,~*正则顺序) > (location 部分起始路径) > (location /)

location匹配首先看优先级:精确= >前缀^~ >正则~,~* >一般>通用/优先级相同:正则看, 上下顺序,上而的优先:一般匹配看长度,最长匹配的优先精确、前缀、正则、一般都没有匹配到,最后再看通用匹配

实际网站使用中,至少有三个匹配规则定义:#第一个必选规则直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,比如说官网。可以是一个静态首页,也可以直接转发给后端应用服务器location = / {root html ;index index.html index . htm;#第二个必选规则是处理静态文件请求,这是nginx作为配使用location ^~ /static/ {root /webroot/static/;

}location ~* . (html Igif ljpgljpeg Ipng Icssljslico)$ {root /webroot/res/ ;

}

#第三个规则就是通用规则,比如用来转发带.php、.jsp后缀的动态请求到后端应用服务器非静态文件请求就默认是动态请求location / {proxy pass server;

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:rewrite
下一篇:java实现实时通信聊天程序
相关文章

 发表评论

暂时没有评论,来抢沙发吧~