我有一个在本地主机上运行的应用程序,监听端口8080
nginx作为反向代理运行,正在侦听端口80
因此,在端口80上到达nginx的请求将发送到侦听localhost:8080的该应用程序,并将此应用程序的响应发送回用户
现在此应用程序无法从请求标头中读取标头变量,并且只能读取查询参数
所以我希望nginx将标头值作为查询参数传递给在localhost:8080上侦听的该应用程序
例如让我们说在请求标头中有一个名为'userid'的自定义变量。
我们如何将此用户ID作为&userid = value附加到URL上传递给在localhost 8080上侦听的应用程序
我当前的站点可用和站点启用的测试文件是
server {
location /test {
proxy_pass http://localhost:8080;
}
}
答案 0 :(得分:2)
如果您有一个名为userid
的请求标头,它将在名为$http_userid
的Nginx变量中可用。
您可以使用rewrite...break
语句更改原始请求的查询参数。
例如:
location /test {
rewrite ^(.*)$ $1?userid=$http_userid break;
proxy_pass http://localhost:8080;
}
有关详细信息,请参见this document。
答案 1 :(得分:0)
因此无需重写或进行任何其他操作。只需将这些参数附加到参数中,即可将要作为查询参数传递的标头参数传递给localhost应用程序,如下所示。
如果您具有自定义标头参数(如userid),则为$ http_userid
server {
location /test {
set $args $args&host=$http_host;
proxy_pass http://localhost:8080;
}
}