首页 > 解决方案 > nginx - 将请求标头变量作为查询参数传递给上游 URL

问题描述

我有一个在 localhost 上运行的应用程序,监听端口 8080

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

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

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

所以我希望 nginx 将标头值作为查询参数传递给这个在 localhost:8080 上监听的应用程序

例如,让我们在请求标头中有一个名为“userid”的自定义变量。

我们如何将此用户 ID 作为附加到 url 的 &userid=value 传递给在 localhost 8080 上侦听的应用程序

我当前的站点可用和站点启用测试文件是

server {

    location /test {

        proxy_pass http://localhost:8080;
    }

}

标签: nginxnginx-reverse-proxynginx-config

解决方案


所以没有必要进行重写或其他任何事情。只需将要作为查询参数传递的标头参数传递给 localhost 应用程序,如下所示,通过附加到参数。

如果您有自定义标头参数,如 userid,那么它将是 $http_userid

server {

    location /test {

          set $args $args&host=$http_host;

          proxy_pass http://localhost:8080;
    }
 }

推荐阅读