1. 程式人生 > >nginx中的if巢狀

nginx中的if巢狀

nginx的配置中不支援if條件的邏輯與&& 邏輯或|| 運算 ,而且不支援if的巢狀語法,否則會報下面的錯誤:nginx: [emerg] invalid condition。
我們可以用變數的方式來間接實現。
要實現的語句:

if ($arg_unitid = 42012 && $uri ~/thumb/){
echo "www.yufei.com";
}
如果按照這樣來配置,就會報nginx: [emerg] invalid condition錯誤。
可以這麼來實現,如下所示:
set $flag 0;
if ($uri ~ ^/thumb/[0-9]+_160.jpg$){
set
$flag "${flag}1"; } if ($arg_unitid = 42012){ set $flag "${flag}1"; } if ($flag = "011"){ echo "www.yufei.com"; }

我的實現是想把僅僅10000.com跳轉,其他的都不跳轉

set $flag 0;
if ( $host = '10000.com' ){
     set $flag "${flag}1";
}
if ( $request_uri = "/" ){
     set $flag "${flag}1";
}
if ( $flag = "011"){
     rewrite ^/$ /index.html last;
}