我有 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?或者热烈欢迎任何其他建议。
答案1
用户与 对话Apache
,然后Apache
与 对话balanced machines
。这就是代理的作用,它确保客户端不直接与服务器对话。因此从平衡服务器的角度来看,Apache
是客户端。所以这Layer 4 load balancing
是唯一的方法。
对于那些想知道解决方案的人,我已配置NGINX
,L4 load balancing
现在它运行良好。