Apache Web服务器负载平衡

时间:2017-01-27 09:31:57

标签: apache ssl webserver load-balancing httpd.conf

我们在安装了apache web服务器的环境中有一个要求,其中ssl和non-ssl端口被配置为分别监听8080和4443。现在我想根据输入对请求进行负载均衡,如果传入请求是ssl,它应该将请求负载平衡到" https"如果它是非ssl,它应该将请求负载平衡到" http"。尝试了下面的方法,但它没有按预期工作。有人可以帮忙吗?

   <Proxy balancer://mybalancerhttp>
            BalancerMember http://localhost1/
            BalancerMember http://localhost2/
            ProxySet lbmethod=byrequests
   </Proxy>

   ProxyPass / "balancer://mybalancerhttp/"
   ProxyPassReverse / "balancer://mybalancerhttp/"

   <Proxy balancer://mybalancerhttps>
            BalancerMember https://localhost1/
            BalancerMember https://localhost2/
            ProxySet lbmethod=byrequests
   </Proxy>

   ProxyPass / "balancer://mybalancerhttps/"
   ProxyPassReverse / "balancer://mybalancerhttps/"

由于

1 个答案:

答案 0 :(得分:0)

这些指令没问题,但您想根据客户要求决定在哪里发送。

最简单的方法是将每个代理程序集及其平衡器定义移动到自己的虚拟主机。

这是

<VirtualHost *:8080>
ServerName yourhostname.example.com
   <Proxy balancer://mybalancerhttp>
            BalancerMember http://localhost1/
            BalancerMember http://localhost2/
            ProxySet lbmethod=byrequests
   </Proxy>

   ProxyPass / "balancer://mybalancerhttp/"
   ProxyPassReverse / "balancer://mybalancerhttp/"
</VirtualHost>

<VirtualHost *:4443>
ServerName yourhostname.example.com
SSLEngine on
SSLProxyEngine on
....certs and all needed directives
<Proxy balancer://mybalancerhttps>
            BalancerMember https://localhost1/
            BalancerMember https://localhost2/
            ProxySet lbmethod=byrequests
   </Proxy>

   ProxyPass / "balancer://mybalancerhttps/"
   ProxyPassReverse / "balancer://mybalancerhttps/"
</VirtualHost>