Nginx 重写并返回干扰不同的位置块

Nginx 重写并返回干扰不同的位置块

我在 nginx 中有以下配置,用于在特定场景中进行重定向。

location /prefix-someurl {
   if (condition) {
            return 301 $scheme://$host/xyz.html;
   }
   proxy_pass someValue;
}

在另一个块中有一些像这样的重写规则

location /someurl {
   if (condition) {
            rewrite ^(.*)abc(.*)$ $1test/abc$2 break;               
            rewrite ^(.*)someurl/$(.*) $1someurl/test/index.html$2;

   }
   proxy_pass value;
}

上述配置按预期工作。但是,如果我对后者进行此修改;

location /someurl {
   if (condition) {
            return 301 $scheme://$host/xyz.html;
   }
   if (condition) {
            rewrite ^(.*)abc(.*)$ $1test/abc$2 break;               
            rewrite ^(.*)someurl/$(.*) $1someurl/test/index.html$2;

   }
   proxy_pass value;
}

我在访问时收到太多重定向错误/prefix-someurl如果我修改/someurl为以下内容,错误就会消失;

location /someurl {
  if (condition) {
        return 301 $scheme://$host/xyz.html;
  }    
  proxy_pass value;
}

我不明白为什么修改/someurl会对产生影响/prefix-someurl。或者我遗漏了有关 nginx 重写评估的某些内容。如果对此有深入的了解,我将不胜感激。

相关内容