在 nginx 中使用 proxy_pass 时以正确的方式附加查询参数

在 nginx 中使用 proxy_pass 时以正确的方式附加查询参数

我的 nginx 代理传递配置设置如下:

location /try-me {
   proxy_pass https://some-domain.com?id=true&zone=false
} 

这很好。但问题是,当有人从浏览器尝试

https://mywebsite.com/try-me?ping=true&foo=bar

proxy_pass 之后创建的最终 URL 是:

https://some-domain.com?id=true&zone=false?ping=true&foo=bar

查询参数格式完全不正确。如何确保 Nginx附加以以下方式转发的任何查询参数:

id=true&zone=false&ping=true&foo=bar

答案1

使用它可能会rewrite...break比尝试proxy_pass正确地做它更好。

例如:

location /try-me {
    rewrite ^ /?id=true&zone=false break;
    proxy_pass https://some-domain.com;
}

rewrite指令将正确附加原始参数。请参阅这个文件了解详情。

在上面的例子中,任何以 开头的 URI 都将被使用调整后的查询字符串/try-me重写为。/

相关内容