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;
}
}
我在侦听端口 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
.
您可以使用 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;
}
}