我有一个应用程序在本地主机上运行,监听端口8080
nginx作为反向代理运行,监听端口80
因此,一个到达端口80上的nginx的请求被发送到这个监听localhost:8080的应用程序,并且来自这个应用程序的响应被发送回用户
现在,该应用程序不能从请求标头中读取标头变量,只能读取查询参数
因此,我希望nginx将标题值作为查询参数传递给这个在localhost:8080上侦听的应用程序
例如,假设在请求头部中有一个名为“userid”的自定义变量。
如何将此userid作为附加到url的&userid=value传递给在localhost8080上侦听的应用程序
我当前的站点可用和站点启用的测试文件是
server {
location /test {
proxy_pass http://localhost:8080;
}
}发布于 2019-03-04 11:37:59
因此,不需要重写或做任何其他事情。只需将您想要作为查询参数传递给localhost应用程序的头参数传递给本地主机应用程序,如下所示,方法是附加到参数。
如果您有像userid这样的自定义头参数,那么它应该是$http_userid
server {
location /test {
set $args $args&host=$http_host;
proxy_pass http://localhost:8080;
}
}发布于 2019-03-03 18:16:18
如果你有一个名为userid的请求头,它将在一个名为$http_userid的Nginx变量中可用。
您可以使用rewrite...break语句修改原始请求的查询参数。
例如:
location /test {
rewrite ^(.*)$ $1?userid=$http_userid break;
proxy_pass http://localhost:8080;
}详情请参见this document。
https://stackoverflow.com/questions/54965093
复制相似问题