Nginx proxy_pass:是否可以向URL添加静态参数?

LeG*_*les 16 nginx

我想在代理传递中在URL中添加一个参数.例如,我想添加一个apiKey:&apiKey = tiger
http://mywebsite.com/oneapi?field=22 ---> https://api.somewhere.com/?field=22&apiKey=tiger 你知道吗?解决方案

非常感谢,吉尔斯.

server {
      listen   80;
      server_name  mywebsite.com;
      location /oneapi{
      proxy_pass         https://api.somewhere.com/;
      }
    }
Run Code Online (Sandbox Code Playgroud)

Jac*_*ack 24

location = /oneapi {
  set $args $args&apiKey=tiger;
  proxy_pass https://api.somewhere.com;
}
Run Code Online (Sandbox Code Playgroud)

  • 如果$ args为空,则将$ args设置为?&apiKey = tiger.这是不对的. (5认同)
  • 当使用`location/somepath`块(没有等号)时,这似乎不起作用.我不得不使用`rewrite ^(.*)$ $ 1?$ args&myParam = value break;`而是在同一个地方. (2认同)

war*_*rch 11

如果$args为空,这也有效。

location /oneapi {
  set $delimeter "";

  if ($is_args) {
    set $delimeter "&";
  }

  set $args "$args${delimeter}apiKey=tiger";

  proxy_pass https://api.somewhere.com/;
}
Run Code Online (Sandbox Code Playgroud)