我是NGINX的新手。我想知道是否可以通过NGINX的单一请求进行两次代理调用,从而影响响应的结果。
具体来说,我想在NGINX请求的响应中添加一个令牌,其中令牌作为来自单独服务的响应头提供。
理论上,它可能看起来像......
location / {
#调用令牌服务并将响应设置为变量,可能吗?
#alse_pass拨打实际电话
#将第一步中的令牌添加到响应头
}
我不知道NGINX是否支持这项工作,如果我需要深入研究自定义模块,或者这只是一个坏主意。
感谢。
答案 0 :(得分:1)
知道了!
location / {
if ($http_x_entry_id = "") {
return 302 /entry;
}
auth_request /token/test-token;
auth_request_set $token $upstream_http_x_test_token;
set $test_ui test-ui;
proxy_pass http://$test_ui;
add_header X-My-Token "$token";
}
location /token/test-token {
internal;
set $token_api token-api;
error_page 500 =401 /error/401;
error_page 400 =401 /error/401;
proxy_method POST;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
rewrite /token/(.*) "/$1/$http_x_entry_id" break;
proxy_pass http://$token_api:8080;
}