location匹配首先考虑匹配的精确度,比如

location ^~ /m/ { }
location ^~ /m/1/2 { }

以上两行,即便匹配/m/放在上方,依然会先匹配到更精确的/m/1/2


if的匹配(假如都能都匹配成功):

  1. 当两个if块中都是rewrite时,会先匹配上方

  2. 当两个if块内部都是proxy_pass时,会先匹配下方的

  3. 当一个是rewrite一个是proxy_pass会先匹配rewrite,无论上下



        location / {
            root   www;
                if ($remote_addr ~* "^(124.193.66.139)"){
                        rewrite ^(.*)$ http://www.motie.com;
#                       proxy_pass http://test1Server;
                }
                if ($request_method = GET ){
#                        rewrite ^(.*)$ http://www.baidu.com;
                        proxy_pass http://testServer;
                }
            index  index.html index.htm;
        }

以上在Ninx1.2、1.6测试