2017-08-25 3 views
0

Ich habe Apache 2.4 Setup mit mod_proxy, um Balance 2 Tomcats zu laden. Hier ist der ZusatzApache mod_proxy URL funktioniert nicht, es sei denn/ist angehängt

ProxyRequests Off 
ProxyPass /APP balancer://mycluster stickysession=JSESSIONID|jsessionid 
ProxyPassReverse /APP balancer://mycluster 
<Proxy balancer://mycluster> 
    BalancerMember http://TOMCAT1:8080/APP route=TOMCAT1 
    BalancerMember http://TOMCAT2:8080/APP route=TOMCAT2 
</Proxy> 
<Location /balancer-manager> 
    SetHandler balancer-manager 
    Require all granted 
</Location> 
ProxyPass /balancer-manager ! 
<Location /server-status> 
    SetHandler server-status 
    Require host localhost 
    Require all granted 
</Location> 

Von einem Browser Httpd.conf wenn ich versuche, „http://localhost:7000/APP“ es funktioniert nicht. Wenn ich jedoch "http://localhost:7000/APP/" verwende, erscheint die Anwendung.

Beachten Sie das zusätzliche "/" und das Ende der URL. Wie kann dies zusätzlich vermieden werden?

aktualisieren Arbeitsstruktur:

ProxyRequests Off 
ProxyPass /APP balancer://mycluster/APP stickysession=JSESSIONID|jsessionid 
ProxyPassReverse /APP balancer://mycluster/APP 
<Proxy balancer://mycluster> 
    BalancerMember http://TOMCAT1:8080 route=TOMCAT1 
    BalancerMember http://TOMCAT2:8080 route=TOMCAT2 
</Proxy> 
<Location /balancer-manager> 
    SetHandler balancer-manager 
    Require all granted 
</Location> 
ProxyPass /balancer-manager ! 
<Location /server-status> 
    SetHandler server-status 
    Require all granted 
</Location> 

Antwort

0

Ihre Ausgleichs Definitionen falsch sind. In den Balancerdefinitionen müssen Sie nur den Knoten und nicht die URI definieren, mit der sie arbeiten.

**Incorrect:** 
BalancerMember http://TOMCAT1:8080/APP 

***Correct:*** 
BalancerMember http://TOMCAT1:8080 

Und dann behandeln Sie uri-Pfade in Proxypass

ProxyPass /app/ balancer://mycluster/app/ 


Sie können auch verwenden:

ProxyPass /app balancer://mycluster/app 

Hinweis: Balancer: // mycluster die gleiche wie Balancer : // MeinCluster /. Und es gibt eine Regel, der Sie folgen sollten, um Probleme zu vermeiden, die sagen, wenn Source ein hinteres Schrägstrichziel hat, sollte auch ein Schrägstrich folgen, auf diese Weise vermeiden Sie Pfadkonflikte in der Antwort vom Backend.

Anmerkung2: Ihre <Location /server-status> hat zwei Require-Anweisungen, da der Standardwert Require any ist, alle sind erlaubt, da Sie Required all bewilligt haben. Daher ist es nicht sinnvoll, in diesem Kontext einen Require-Host localhost zu definieren.

+0

Das hat wie ein Charme funktioniert! Danke. Zum Nutzen anderer, aktualisiert die Frage mit der Struktur, die für mich funktionierte – user811433

Verwandte Themen