2017-01-27 176 views
0

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

<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/" 

感谢

回答

0

这些指令都很好,但你要决定在哪里基于客户端发送请求。

最简单的方法是将这些proxypass集合及其平衡器定义中的每一个移到他们自己的虚拟主机。

这是

<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> 
+0

谢谢!我以同样的方式尝试。但它没有按预期工作。它返回找不到的错误页面。如果尝试将流量路由到单个主机,它的工作状态如下所示,而不是负载平衡。 ProxyPass/https://主机名1/ ProxyPassReverse/https://主机名1/ – user3171821

+0

我告诉你的配置将工作,如果您通过在服务器名称加上端口使用正确的名称登陆正确的虚拟主机。当你使用ProxyPass /你正在代理一切,所以404会来自后端。修复名称并确保您没有任何其他干扰或降落在另一个虚拟主机中。提示“apachectl -S” –

+0

#这里有输出。#虚拟主机配置: #*:8080是NameVirtualHost #默认服务器test.one.com(/opt/apache/conf/httpd.conf:484) #端口8080 namevhost test.one.com(/ opt/apache/conf/httpd.conf:484) #port 8080 namevhost login.test.one.com(/opt/apache/conf/httpd.conf:510) #*:4443是NameVirtualHost #默认服务器测试。 one.com(/opt/apache/conf/httpd.conf:537) #port 4443 namevhost test.one.com(/opt/apache/conf/httpd.conf:537) – user3171821