nginx - 将请求 header 变量作为查询参数传递给上游 URL

nginx - Passing request header variables to upstream URL as query parameter

我在侦听端口 8080

的本地主机上有一个应用程序 运行

nginx 运行 作为反向代理,侦听端口 80

因此,在端口 80 上到达 nginx 的请求被发送到侦听 localhost:8080 的此应用程序,并将来自此应用程序的响应发送回用户

现在此应用程序无法从请求 header 中读取 header 变量,只能读取查询参数

所以我希望 nginx 将 header 值作为查询参数传递给侦听 localhost:8080

的应用程序

例如让我们说在请求 header 中有一个名为 'userid'.

的自定义变量

我们如何将此用户 ID 作为附加到 url 的 &userid=value 传递给侦听本地主机 8080

的应用程序

我目前site-available和site-enabled的测试文件是

server {

    location /test {

        proxy_pass http://localhost:8080;
    }

}

如果您有一个名为 userid 的请求 header,它将在名为 $http_userid.

的 Nginx 变量中可用。

您可以使用 rewrite...break 语句更改原始请求的查询参数。

例如:

location /test {
    rewrite ^(.*)$ ?userid=$http_userid break;
    proxy_pass http://localhost:8080;
}

详情见this document

因此无需重写或其他任何操作。只需将要作为查询参数传递给本地主机应用程序的 header 参数附加到参数即可,如下所示。

如果您有自定义 header 参数,例如 userid,则它将是 $http_userid

server {

    location /test {

          set $args $args&host=$http_host;

          proxy_pass http://localhost:8080;
    }
 }