2009-03-10 3 views
1

Mon application a deux sections internes:Utilisation d'Apache pour le routage d'équilibrage de charge

  1. section Ajouter URL: %URI%/upload/%action%
  2. section Connexion url: %URL%/Login/%action%

Le code de la section de connexion est situé sur un serveur 5.123.12.1, tandis que le code de téléchargement est situé sur un autre serveur 5.123.12.2. Après le routage du serveur, il y aura un routage supplémentaire relatif aux paramètres de la requête ou aux paramètres d'action.

Comment construire des règles pour mod-rewrite et mod-cond dans le fichier de configuration Apache pour les deux machines afin que le routage puisse être fait?

+0

-1: aucun échantillon de code; -1 plzsendtehcodez; -1 pas de messages d'erreur de quelque chose qui n'a pas fonctionné. –

Répondre

1

Pour votre configuration, j'utiliserais ce qui suit sur un autre serveur Apache fonctionnant en tant que frontal.

<VirtualHost *:80> 
    ServerName your.domain.com 
    RewriteEngine on 
    ProxyPreserveHost on 
    ProxyPassReverse/ http://5.123.12.1/ 
    ProxyPassReverse/ http://5.123.12.2/ 

    RewriteRule ^/Login(.*) http://5.123.12.1/Login$1 [P,L] 
    RewriteRule ^/upload(.*) http://5.123.12.2/upload$1 [P,L] 

</VirtualHost> 

Cela suppose que mod_rewrite est activé. Je ne suis pas sûr que vous puissiez utiliser l'adresse IP dans les règles de réécriture, donc vous devrez peut-être configurer un nom d'hôte interne pour les deux serveurs que vous avez listés.

0

Il est peut-être préférable d'utiliser un logiciel d'équilibrage de charge dédié tel que HAProxy ou Perlbal. L'avantage étant que vous pouvez équilibrer vos demandes pour la même URL sur plus d'un serveur principal.

A défaut, il y a un module de calcul d'équilibrage pour Apache appelé mod_proxy_balancer:

<Proxy balancer://mycluster> 
BalancerMember http://192.168.1.50:80 
BalancerMember http://192.168.1.51:80 
</Proxy> 
ProxyPass /test balancer://mycluster/