
作者介绍
牛恒博,一线运维人,擅长为中小企业快速实现运维从无到有,再到自动化。现就职于某医疗大数据公司。
rewrite介绍
rewrite模块允许使用正则表达式重写URL(需要PCRE库),并且可以根据相关变量重定向和选择不同的配置。
如果这个指令再server字段中指定,那么将被请求的location确定之前执行。如果指令执行后所选择的location中有其它重写规则,那么它们也被执行。如果再location中执行这个指令产生了新的URL,那么location又一次确定了新的URL。
这样的循环最多执行10次,超过以后nginx将返回500错误。
rewrite语法
格式: rewrite regex replacement [flag]; 默认参数: - 作用域: server,location,if
regex:支持正则表达式,字符串等
replacement: 匹配规则后的重定向
flag的参数包括
laste:表示完成rewrite,浏览器地址蓝URL地址不变
break:本条规则匹配完成后,终止匹配,不再匹配后面的规则,浏览器地址栏URL地址不变
redirect:返回302临时重定向,浏览器地址汇现实跳转后的URL地址,如果替换字段用http://开头泽被使用
permanent:返回301永久重定向,浏览器汇显示跳转后的URL地址
last和break的区别:
break匹配完成后,不再继续匹配。last匹配完成后,会使用新的URL继续匹配下去。
last示例
server {
location {
rewritw last/ 1.html last;
}
location = /1.html {
return 400;
}
}访问/last/时重写到/1.html,然后使用新的uri再匹配,匹配到location = /1.html,结果返回400
break示例
server {
location / {
rewritw /break/ /1.html break;
}
location = /1.html {
return 400;
}
}访问/break/时重写到/1.html,由于返回了break,就不再继续进行匹配
if模块
语法
格式:if (condition) {...}
默认值: -
作用域:server,locationif判断如果结果为true,那么在大括号中指定的模块指令将被执行,并且请求被分配在if指令内部的配置。 if指令内的配置继承自先前的配置级别。条件可以是以下任何一个:变量名;如果变量的值为空字符串或“0”,则为false;在版本1.0.1之前,以“0”开头的任何字符串被视为false值。
使用
=
和!=
运算符将变量与字符串进行比较;使用
〜
(区分大小写匹配)和〜*
(区分大小写匹配)运算符匹配正则表达式正则表达式中的括号包含起来以后在$1 .. $9变量中重用的捕获。负运算符
!〜
和!〜*
也可用如果正则表达式包含
}
或;
字符,则整个表达式应用单引号或双引号括起来使用
-f
和!-f
运算符检查文件存在使用
-d
和!-d
运算符检查目录存在使用
-e
和!-e
运算符检查文件,目录或符号链接是否存在使用
-x
和!-x
运算符检查可执行文件
未经平台同意授权不得转载


记得关注哦






