nginx中的if巢狀
阿新 • • 發佈:2019-02-13
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;
}