如何获取 url 参数并使用 nginx 传递给 proxy_pass

how to get url parameter and pass to proxy_pass using nginx

我需要从一个URL中获取参数,例如abc=MY_STRING:

https://my-address/test?abc=MY_STRING

而在反向代理(我的地址),配置如下:

location /test?(.*) {
  proxy_pass http://local-server:1234/test?$args
}

但它不起作用。

我尝试了另一种配置:

location /test?(.*) {
  proxy_pass http://local-server:1234/test?
}

但没用。

您不能将 URI 的查询字符串部分与 locationrewrite 语句匹配,因为它不是 normalized URI.

的一部分

但你不需要。 URI(包含查询字符串)将向上游传递 除非您使用 rewritetry_files 语句重定向它。

例如:

location /test {
    proxy_pass http://localhost:1234;
}

URI /test?abc=MY_STRING 将匹配位置并传递给 localhost:1234 完全相同。有关更多信息,请参阅 this document