【发布时间】:2017-12-22 05:25:21
【问题描述】:
我有 3 个后端 API 服务器(HTTPS),API 服务器根据用户证书对不同的用户有不同的授权权限,我正在配置 apache 来对 3 个后端服务器进行负载平衡,如下所示
<VirtualHost *:zzzz>
SSLEngine on
SSLCertificateFile /path/to/server.crt
SSLCertificateKeyFile /path/to/server.key
SSLCACertificateFile /path/to/ca.crt
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
<Proxy balancer://api_server>
BalancerMember https://xx.xx.xx.xx:yyyy
BalancerMember https://xx.xx.xx.xx:yyyy
</Proxy>
ProxyPass / balancer://api_server/
</VirtualHost>
问题是当客户端请求apache,带有证书时,只有请求进入API服务器,而不是证书,API服务器响应未经授权的用户,我尝试使用SSLProxyMachineCertificateFile,但它只接受一个一组证书,每次都通过相同的证书,但在这种情况下,授权仅基于证书。
有没有办法盲目地将 HTTPS 请求转发给 API?或任何其他建议都受到热烈欢迎。
【问题讨论】:
-
你可以试试 proxyPass,而不是负载均衡器。
-
@NitinDhomse 最终目标不是让单个服务器超载,虽然我尝试了 proxyPass,但没有帮助
-
用户与 Apache 对话,然后 Apache 与平衡的机器对话。这就是代理的意义所在,它确保客户端不会直接与服务器对话。所以从平衡服务器的角度来看,Apache 是客户端。我认为这样做的唯一方法是使用不执行 SSL 卸载的第 4 层网络负载平衡器。即不是 Apache。
-
@Nic3500 谢谢我配置了 Nginx 第 4 层负载均衡器,现在它工作正常 :) 节日快乐..
-
np,我将我的评论转换为答案,当你有 2 秒时,请接受。节日快乐!