我们有几个位置设置了反向代理。 我们目前的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。
详情请参阅此文件 。