Py学习  »  NGINX

nginx-i将头变量作为查询参数传递到上游

Tahseen • 5 年前 • 884 次点击  

我有一个在本地主机上运行的应用程序正在监听端口8080

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

因此,一个来自端口80上nginx的请求被发送到这个监听localhost:8080的应用程序,并且这个应用程序的响应被发送回用户

现在这个应用程序无法从请求头读取头变量,并且只能读取查询参数

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

例如,假设在请求头中有一个名为“userid”的自定义变量。

如何将这个userid作为附加到url的&userid=值传递给在localhost 8080上侦听的应用程序

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

server {

    location /test {

        proxy_pass http://localhost:8080;
    }

}
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40376
 
884 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Tahseen
Reply   •   1 楼
Tahseen    6 年前

所以不需要重写或其他任何东西。只需将要作为查询参数传递给localhost应用程序的头参数(如下所示)附加到参数。

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

server {

    location /test {

          set $args $args&host=$http_host;

          proxy_pass http://localhost:8080;
    }
 }
Richard Smith
Reply   •   2 楼
Richard Smith    6 年前

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

您可以使用 rewrite...break 语句。

例如:

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

this document 详情。