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.