栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 系统运维 > 运维 > Linux

Nginx之正则表达式、location匹配及rewrite重写

Linux 更新时间:发布时间: 百科书网 趣学号

在Nginx已经成为很多公司作为前端反向代理服务器的首选,在实际工作中往往会遇到很多跳转(重写URL)的需求。比如更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。
 

一,rewhite作用

1,URL看起来更加规范,合理

2,企业会将动态URL地址伪装成静态地址提供服务

3,网址换新域名后,让旧的访问跳转到新的域名上

4,服务端某些业务调整

二、常见的Nginx正则表达式
^匹配输入字符串的起始位置
$Lt输入字符串的结束位置
匹配前面的宁符零次或多次。如ol""能匹配"o及"or".
"oll
+匹配前面的字符一次或多次。如r"ol+"能匹配"oI及"oll、"oll,但不能匹配"o”
?匹配前面的字符零次或一次,例如do(es)?"能匹配“do”或“does”,”?”等效于”{0,1}”
.

匹配除""n'之外的f何单个字符,若要匹配包括"n"在内的任意字符,请使用诸如          "[.n]"之类的模式

    将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用

d匹配纯数字
{n}重复n次
{n,}重复n次或页多次
{n,m}重复n到m次
 [ ]定义匹配的字符范围
0匹配单个字符c
[a-z]匹配, a-z小写字母的任意一个
[a-zA-Z0-9]匹配所有大小写字母或数字
()表达式的开始和结束位置
|或运算符

语法格式

rewrite    [flag];

last  相当于apache的L标记,表示完成rewrite

break 本地规则匹配,完成即终止,不在匹配后面的任何规则

redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址,爬虫不会更新3URL

permanent 返回301永久重定向,浏览器地址栏会显示跳转后的

 

三、location 1、location分类
精准匹配location =/{}
一般匹配location / {}
正则匹配location~/{}
2、匹配规则

l=

进行普通字符精确匹配,也就是完全匹配

^~

表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其它location

~

区分大小写的匹配

~*

不区分大小写的匹配

!~

区分大小写的匹配取非

!~*

不区分大小写的匹配取非

 3、location匹配优先级
相同类型的表达式,字符串长的会优先匹配
按优先级排列
 
首先精确匹配  =
其次前缀匹配  ^~
其次按文件中顺序的正则匹配 ~或~*
然后匹配不带任何修饰符的前缀匹配
最后是交给 / 通用匹配
四、location 示例说明

① location = / {}

=为精准匹配 / ,主机名后面不能带任何字符串,比如访问 / 和 /data ,则 / 匹配 ,/data 不匹配。再比如 location = /abc ,则只匹配/abc,/abc/或/abcd 不匹配。若location /abc ,则匹配 /abc 、/abcd/ 、/abc/。

② location / {}

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

③location /documents/ {}

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

④location /documents/abc {}

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

⑤ location ^~ /images/ {}

匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,直接采用这一条。

⑥ location ~ .(gif|jpg|jpeng)$ {}*

匹配所有以gif、jpg或jpeng结尾的请求,然而,所有请求 /images/ 下的图片会被 location ^~ /images/ 处理,因为^~ 的优先级更高,所以到达不了这一条正则。

⑦ location /images/abc {}

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

⑧ location ~ /images/abc {}

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

⑨ location /images/abc/1.html {}

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

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/1073955.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号