我想使用auth_request在成功的认证请求后设置一个标题,然后将其传递给将处理实际请求的下一个代理内联.
我已经设置Nginx和各种代理来做他们的事情,但是我不确定如何设置我用于认证请求的服务器(图中的AUTH PROXY)的标题,以便将该标头传递给下一个服务器(图中的后端服务器)
Nginx ---- auth request ----> AUTH PROXY
|
| <--- 201 <------ SUCCESS
|
----> underlying request ----> BACKEND SERVER
我的Nginx配置看起来像
server {
listen 9123;
resolver 10.3.0.2;
resolver_timeout 30;
location / {
auth_request /_auth;
proxy_set_header x-user $http_x_user;
proxy_pass http://backend_server;
}
location = /_auth {
internal;
proxy_pass https://auth;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
}
当我提出实际请求时,我在Nginx调试日志中看到以下内容(这是auth服务器响应的一部分):
2013/10/14 17:46:42 [debug] 31222#0: *4 http proxy header: "Content-Type: text/html; charset=utf-8"
2013/10/14 17:46:42 [debug] 31222#0: *4 http proxy header: "Date: Mon,14 Oct 2013 17:46:42 GMT"
2013/10/14 17:46:42 [debug] 31222#0: *4 http proxy header: "Server: Nginx/1.2.5"
2013/10/14 17:46:42 [debug] 31222#0: *4 http proxy header: "Vary: Cookie"
2013/10/14 17:46:42 [debug] 31222#0: *4 http proxy header: "x-user: 1"
我想要把x-user头放在后端服务器上.
我已经尝试过各种组合的位置/块,但没有一个工作.例如.
> proxy_set_header x-user $upstream_http_x_user;
> proxy_set_header x-user $http_x_user;
> proxy_set_header x-user $sent_http_x_user;
> proxy_pass_header x-user
这些似乎都不行.任何想法如何才能完成这项工作?请注意,这是auth代理设置我要传递到后端服务器的标题,
最佳答案