nginx不支持if else 多重判断,需要用另一种方法来解决如下例:


 location /api/opertree/ {

        proxy_next_upstream error timeout invalid_header;

                proxy_pass_header server;

        proxy_http_version 1.1;

        proxy_set_header Connection "";

        set $flag 0;

                if ($request_uri ~* "/api/XXX/onenode") {

                    set $flag "${flag}1";

                }

                if ($request_uri ~* "(uid=[0-9]*[5-9]\&)|((uid=[0-9]*[5-9]$))") {

                    set $flag "${flag}2";

                }

                if ($request_uri ~* "uid=((XXXX|XXXX)&)|((XXXX3|XXX3)$)") {

                    set $flag "${flag}3";

                }

                if ($flag ~* "01(2|3)") 

                {                       

                    proxy_pass http://commendfe/api/XXXX/list?$args;

                    break;

                }                         

                proxy_pass http://opertree;

        }