从NGINX发出自定义令牌

时间:2017-06-15 15:08:28

标签: nginx

我是NGINX的新手。我想知道是否可以通过NGINX的单一请求进行两次代理调用,从而影响响应的结果。

具体来说,我想在NGINX请求的响应中添加一个令牌,其中令牌作为来自单独服务的响应头提供。

理论上,它可能看起来像......

location / {

#调用令牌服务并将响应设置为变量,可能吗?

#alse_pass拨打实际电话

#将第一步中的令牌添加到响应头

}

我不知道NGINX是否支持这项工作,如果我需要深入研究自定义模块,或者这只是一个坏主意。

感谢。

1 个答案:

答案 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;
    }