Nginx不区分大小写,区分大小写的proxy_pass

我们有几个位置设置了反向代理。 我们目前的configuration和运行是:

upstream backends { server Backend1; server Backend2; } server { ... other server config stuff here ... location /App1 { ... proxy header stuff ... proxy_pass http://backends/App1; } } 

现在我们要做的就是设置它,区分大小写的后端(在本例中是Backend1 / 2 http:// backends / App1 )可以不区分大小写,这样您就可以访问http:// example.com/app1或http://example.com/App1 (或其任何变体)

我们正试图开始工作的新configuration如下所示:

 location ~* /App1 { proxy_pass http://backends/App1; } 

但是当我们重新加载configuration时没有骰子。 我们看到错误:

“proxy_pass”不能在由正则expression式给定的位置,或在命名的位置,或在“if”语句,或在“limit_except”内的URI位置…

任何想法/见解如何才能做到这一点?

proxy_pass执行的隐式重写在存在正则expression式位置时不起作用。 请参阅此文档了解更多

但是,您可以使用rewrite ... break来执行相同的function。

 location ~* /App1(?<stuff>.*)$ { rewrite ^ /App1$stuff break; proxy_pass http://backends; } 

正则expression式用命名捕获来扩展以获取URI的其余部分,然后rewrite语句为传递上游构build一个新的URI。

详情请参阅此文件 。