Nginx Rewrite 规则相关指令有if、rewrite、set、rerurn、break等,其中rewrite最关键的指令。一个简单的Nginx Rewrite 规则语法如下:
rewrite ^/b/(.*).html /play.php?video=$1 break;
如果加上if语句,示例如下:
if(!-f $request_filename)
{
rewrite^/img/(.*)$ /site/$host/images/$1 last;
}
1.break
使用环境:server,location,if
作用:完成当前匹配规则集,不再处理rewrite指令
2.if
使用环境:server,location
作用:判断条件是否符合,不支持&&和||,比较=(表示等于),!=(表示不等于),“~”区分大少写匹配,“~*”不区分大少写匹配,"!~"和“!~*"刚好相反,”-f“和”!-f"判断文件
是否存在,"-d"和"!-d"判断目录是否存在,"-e"和"!-e"判断目录或文件是否存在,"-x"和"!-x"判断文件是否可以执行,"()"括起来的可以通过$1-$9来访问
3.return
使用环境:server,location,if
作用:结束规则的执行并返回状态码给客户端
4.rewrite regex replacement flag
使用环境:server,location,if
作用:根据表达式来重定向URL,或修改字符串,重写表达式只对相对路径有效
flag:last-表示完成rewrite,浏览器地址栏不会显示重定向后的URL,break-本条规则完成匹配后,终止匹配,不再匹配后面规则,浏览器地址栏不会显示重定向后的URL,redirect-返
回302临时重定向,浏览器地址栏显示重定向后的URL,permanent-返回301重定向,浏览器地址栏显示重定向后的URL
last和break区别,使用alias要使用last标记,使用proxy_pass要使用break,last会对server{...}里重新发起请求
5.set variable value
使用环境:server,location,if
作用:定义一个变量并赋值
6.uninitialized_variable_warn on|off
使用环境:http,server,location,if
作用:开启或关闭没初始化的警告