**if指令和判断**
在nginx中使用if(),主要的是条件语句怎么写。
if($slow){
}
判断语句。
`[ = | != | ~ | ~* | !~ | !~* ] `
`=`:等于
`!=`:不等于
`~`:正则区分大小写匹配
`~*`:正则不区分大小写匹配
`!~`:正则区分大小写匹配失败的时候。
`!~*`:正则区分大小写匹配失败的时候。
*例子*
if ($request_method = POST){
#如果请求为post
}
if ($request_method ~* P* ){
#如果请求为以p开头的请求 如post 、put
}
`[ -f | !-f | -d | !-d | -e | !-e | -x | !-x ]`
`-f`:请求的文件存在为true
`!-f`:请求的文件不存在,但该文件的目录存在为true
`-d`:请求的目录存在为true
`!-d`:请求的目录不存在,但该目录的上级目录存在为true
`-e`:当请求的文件或目录存在时true
`!-e`:如果请求的文件和改文件所在路径上的目录都不存在,为true
`-x`:请求的文件可执行,为true
`!-x`:请求的文件不可执行,为true
*例子*
if (-f $reque_filename){
#文件存在
}
if (!-f $reque_filename){
#文件不存在
}
*break*
遇到break就跳出,后面的指令不在执行
if (!-f $reque_filename){
set $id = 1; #有效的指令
break;
limit_rate 10k; #无效的指令
}
*return*
完成对请求的处理。直接向客户端返回响应状态码。
return code URL ;
return [text];
`code`: 返回给客户端的HTTP状态码
`URL`:返回给客户端的URL地址
`text`:返回给客户端的响应体内容,支持变量。
*set*
设置变量
set $id = 2