if指令该指令用来支持条件判断,并根据条件判断结果选择不同的Nginx配置。
语法 | if (condition){...} |
默认值 | — |
位置 | server、location |
condition为判定条件,可以支持以下写法:
1. 变量名。如果变量名对应的值为空字符串或"0",if都判断为false,其他条件为true。
if($param){}
2. 使用"="和"!="比较变量和字符串是否相等,满足条件为true,不满足为false
if($request_method = POST){return405;}
注意:此处和Java不太一样的地方是字符串不需要添加引号,并且等号和不等号前后到需要加空格。
3. 使用正则表达式对变量进行匹配,匹配成功返回true,否则返回false。变量与正则表达式之间使用"~","~*","!~","!~*"来连接。
"~"代表匹配正则表达式过程中区分大小写,
"~*"代表匹配正则表达式过程中不区分大小写
"!~"和"!~*"刚好和上面取相反值,如果匹配上返回false,匹配不上返回true
if($http_user_agent ~ MSIE){#$http_user_agent的值中是否包含MSIE字符串,如果包含返回true}
注意:正则表达式字符串一般不需要加引号,但是如果字符串中包含"}"或者是";"等字符时,就需要把引号加上。
4. 判断请求的文件是否存在使用"-f"和"!-f",
if(-f $request_filename){#判断请求的文件是否存在
}if(!-f $request_filename){#判断请求的文件是否不存在
}
5. 判断请求的目录是否存在使用"-d"和"!-d"
6. 判断请求的目录或者文件是否存在使用"-e"和"!-e"
7. 判断请求的文件是否可执行使用"-x"和"!-x"
Nginx教程,Java进阶从0到1学会Nginx分布式框架