2017-01-27 4 views
0

Nous avons besoin d'un environnement dans lequel le serveur web apache est installé, dans lequel le port ssl et non-ssl est configuré pour écouter 8080 et 4443 respectivement. Maintenant je veux équilibrer la demande basée sur l'entrée, si la demande entrante est ssl il devrait équilibrer la demande à "https" et si son non-ssl il devrait charger équilibrer la demande à "http". J'ai essayé la méthode ci-dessous mais cela ne fonctionne pas comme prévu. Quelqu'un peut-il aider?Serveur Web Apache Équilibrage de charge

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

Merci

Répondre

0

Ces directives sont très bien, mais vous voulez décider où envoyer en fonction de la demande du client.

La méthode la plus simple consiste à déplacer chacun de ces ensembles de proxypass et leur définition d'équilibreur vers leur propre hôte virtuel.

C'est

<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

Merci !! J'ai essayé de la même manière. Mais cela ne fonctionne pas comme prévu. Il renvoie la page d'erreur introuvable. Au lieu d'équilibrer la charge si vous essayez d'acheminer le trafic vers un hôte unique, il fonctionne correctement comme ci-dessous. ProxyPass/https: // nomhôte1/ ProxyPassReverse/https: // nomhôte1/ – user3171821

+0

La configuration que je vous ai indiquée fonctionnera si vous entrez dans le bon hôte virtuel en utilisant les noms corrects dans le nom du serveur plus le port. Lorsque vous utilisez ProxyPass/vous êtes en train de tout envoyer par proxy, donc un 404 viendrait du backend. Corrigez les noms et assurez-vous que rien d'autre n'interfère ou atterrisse dans un autre virtualhost. Astuce "apachectl -S" –

+0

#Il y a la sortie. #VirtualConfiguration de l'ordinateur: # *: 8080 est un NameVirtualHost # serveur par défaut test.one.com (/opt/apache/conf/httpd.conf:484) # port 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 est un test serveur par défaut de NameVirtualHost #. one.com (/opt/apache/conf/httpd.conf:537) # port 4443 nomvhost test.one.com (/opt/apache/conf/httpd.conf:537) – user3171821