nginx多重条件判断

nginx配置语法里面的if其实是不支持逻辑与,或操作的。但是可以通过set变量的方式绕过去。实例如下:

if ($http_user_agent ~ "^Mozilla/5.0" ) {
    set $test 1;
}
if ($request_uri ~ "sendSMS")
{
    set $test "${test}2";
}
if ($request_uri !~ "vcode")
{
    set $test "${test}3" ;
}
if ($test = 123)
{
    return 403;

}

代码用于屏蔽所有Mozilla的agent发起的sendSMS uri的请求,并且uri中没有包含vcode信息的请求。直接会被返回403.

你可能感兴趣的:(nginx)