条件判断
Nginx语法不支持if条件的逻辑与&&
逻辑或||
运算 ,而且不支持if的嵌套语法。需要借助变量来实现嵌套语法或多条件判断
if else
location / {
set $flag 0;
if ($host = ) {
proxy_pass ;
set $flag 1;
}
# 没有匹配到,跳转到默认页面
if ($flag = 0) {
proxy_pass ;
}
}
多条件判断
location / {
set $flag 0;
if ($uri ~ ^/static/$){
set $flag "${flag}1";
}
if ($scheme= http){
set $flag "${flag}1";
}
if ($flag = "011"){
echo "";
}
}
参考资料:
- Nginx wiki
- Pitfalls and Common Mistakes
- Nginx 陷阱和常见错误