如何避免将 Regrex 部分传递到 Nginx 中的 proxy_pass

如何避免将 Regrex 部分传递到 Nginx 中的 proxy_pass

我想将所有请求转发到 https://myfrontend/(anything)/front/ 到我的后端服务器 http://mybackend:8081 ,现在我像下面这样设置我的 nginx:

location ~ ^/(.*)/front/ {
  proxy_pass http://backend:8081;
}

但是,这会将 (.*) 部分传递到后端服务器的末尾,如下所示:

如果我尝试访问:https://myfrontend/123/front/,它将转发到http://backend:8081/123/front,而我想要的只是将其转发到http://backend:8081

我尝试过重写并且它可以工作,但它会是一个重定向,而我想在浏览器地址选项卡中的 URL 中保留“123”。

我也尝试过下面的配置:

location ~ ^/(.*)/front/ {
  proxy_pass http://backend:8081/;  #with the trailing / at the end
}

但如果在定位中使用了正则表达式,则不允许这样做。我尝试了以下静态定位配置,效果很好:

location  /123/front/ {
  proxy_pass http://backend:8081/;
}

你有什么好主意吗?

谢谢

相关内容