Apache2 NTLM 无法与反向代理负载均衡器配合使用

Apache2 NTLM 无法与反向代理负载均衡器配合使用

我们正在努力在两台不同的 Windows Server 2012 计算机(我们称之为 VmA 和 VmB)上的两个 Apache 服务器之间设置负载平衡,目前我们使用mod_authnz_sspiWindows 身份验证来对用户进行身份验证。VmA托管负载平衡器和用于处理请求的辅助 HTTP 服务器,VmB仅托管 HTTP 服务器。

我们遇到的问题是,它不会自动将凭据传递到辅助服务器,并且它始终会要求输入凭据(需要注意的是,如果您输入凭据,它将起作用,但这不是我们环境的选项)。此外,如果我们禁用 VmB在服务器平衡中,并且只VmA在平衡器中,它工作顺利。它只在作为虚拟机之间的代理工作时要求提供凭据。

这是我的httpd.conf参考文件。

<Proxy "balancer://mycluster">
        BalancerMember "http://VmAhostname:8080"
        BalancerMember "http://VmBhostname:80"
</Proxy>

KeepAlive On

SetEnv proxy-initial-not-pooled
SetEnv proxy-chain-auth On

ProxyRequests On
ProxyVia On
ProxyPreserveHost On
ProxyPass               "/" "balancer://mycluster/"
ProxyPassReverse        "/" "balancer://mycluster/"

任何援助将不胜感激

答案1

嘿伙计们,我们最终解决了这个问题。本质上最好的方法是从请求服务器中删除 NTLM 身份验证,并仅在平衡加载服务器上启用身份验证。然后,让反向代理服务器添加带有身份验证详细信息的请求标头。

如果你这样做,你将会需要确保请求服务器仅允许来自反向代理服务器的流量,否则任何人都可以向头注入用户名。

从请求服务器中删除身份验证后,只需将其添加到反向代理服务器:

RequestHeader set X-Remote-User expr=%{REMOTE_USER}

这样就行了!

相关内容