1

我需要一些指导才能将静态标头传递给 nginx 中的 auth_request。
我的位置配置如下:

location = /auth {
  internal;     
  proxy_pass http://authserver.com:8009/auth;
  proxy_pass_request_body off;
  proxy_set_header Content-Length "";
  proxy_set_header X-Original-URI $request_uri;
}

我的子请求如下所示:

location = /app/finance/ {
  proxy_pass_request_headers      on;
  # Custom header to be added
  proxy_set_header CallType "MAJOR";
  auth_request /auth;
  error_page 401 =401 /auth;      
  proxy_pass http://myaddservice.com:8080/finance/;
}

我需要将 CallType 标头传递给 auth_request。我尝试过使用 add_header、proxy_set_header 但它没有用。
我有一个 Rest Api 在 auth_request 后面进行身份验证,它需要 CallType 标头。
我不能让它作为 api 标头的一部分传递,因为它是一个内部进程。

4

1 回答 1

2

你可以试试这个:

location = /auth {
  internal;     
  proxy_pass http://authserver.com:8009/auth;
  proxy_pass_request_body off;
  proxy_set_header Content-Length "";
  proxy_set_header X-Original-URI $request_uri;
  proxy_set_header CallType $calltype;
}

location = /app/finance/ {
  set $calltype "MAJOR";
  proxy_pass_request_headers      on;
  auth_request /auth;
  error_page 401 =401 /auth;      
  proxy_pass http://myaddservice.com:8080/finance/;
}

如果将从其他位置调用身份验证请求,则该$calltype变量将具有空值,并且CallType根本不会设置标头(如果将空值作为参数传递给add_headerorproxy_set_header指令,nginx 不会设置标头)。

于 2020-11-10T13:08:04.453 回答