使用 nginx 代理传递 remote_user

Proxy pass remote_user with nginx

我有一个防火墙,它是 SSL 终结器并设置了 remote_user header。这个 header 应该传递给应用程序,但是我们有一个 nginx 代理位于中间。

浏览器通过 SSL -> 防火墙代理 -> Nginx 代理 -> App

我一辈子都想不出如何将 remote_user header 从防火墙传递到应用程序。 Nginx 似乎吞下了它。 $remote_user 没有它(这是有道理的)。 $http_remote_user 没有它(这没有意义)。我试图在 $proxy_add_* 中找到它,但找不到。

当 SSL 终止符不是 nginx 时,如何代理传递 remote_user header?

EDIT1:我尝试过的其他事情:

proxy_pass_request_headers on;
proxy_pass_header remote_user;
proxy_set_header other_user $http_remote_user;

proxy_pass http://scooterlabs.com/echo;

您需要使用 proxy_pass_request_headers onunderscores_in_headers on 的组合,因为您的 header 包含下划线。

underscores_in_headers 需要放在您的 http 块中。

参见:http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers

旧答案

您正在寻找proxy_pass_header

参见:Module ngx_http_proxy_module