因為nginx配置文件中不支持邏輯運算,所以需要同時滿足多個條件的話 可以用如下方式
set $flag 0; # 設置個初始值
if ($uri !~ (/aaa|/bbb/ccc|/ddd|/eee|/fff/v2n)){ #判斷請求的uri 里面有沒有包含這些內容("/app" "/bbb/ccc" "/ddd" "/eee" "/fff/v2n")
set $flag "${flag}1";#如果不包含 賦值為01
}
if ($host ~ ^(www.aa.bb)){# 如果是通過域名www.aa.bb 訪問進來的
set $flag "${flag}1"; # 賦值為011
}
if ($flag = "011"){
return 403; #返回403狀態碼 整體就是從域名www.aa.bb請求進來的 且uri內容不包含"/app" "/bbb/ccc" "/ddd" "/eee" "/fff/v2n"的都返回403
}
為了方便驗證觀察 可以在nginx的日志設置 log_format main里面加兩個參數 "$host" "$flag" 來打印出來 請求來源地址 和flag值
這樣就做到了控制
