如何保留查询参数并使用lua块传递proxy_pass和主机?

时间:2018-02-15 15:13:30

标签: nginx lua

我有一个lua块用于根据节点env填充我的后端url。它转发请求但删除查询参数。

location / {
set_by_lua_block $url {
if os.getenv("NODE_ENV") == 'prod' then
  return "https://example.com"
else
  return "https://www.com"
}


proxy_pass $url
}

知道我们如何保留查询参数。我的请求看起来像https://newlocation.com/initialize?user=123 ...

1 个答案:

答案 0 :(得分:0)

首先 - 确保您只想要query string,也许您还希望转发path

根据nginx documentation,您可以使用变量来在请求代理时构建URL:

  1. $is_args - 如果请求行有参数,则为问号,否则为空字符串;
  2. $args - 请求行中的参数;
  3. $request_uri - 原始请求uri。
  4. 因此,如果您只需要query string,则应使用:

    proxy_pass $url$is_args$args;
    

    如果你还需要path,你应该使用:

    proxy_pass $url$request_uri;