Reverse Proxy mit mehreren Zielen eine Domain - mod_proxy

Alles, was den Apache betrifft, kann hier besprochen werden.

Reverse Proxy mit mehreren Zielen eine Domain - mod_proxy

Postby SPILIHP1980 » 10. May 2017 13:29

Moin Moin oder Hallo,

ich bin nun seit 3 Tagen vergeblich an einer Lösung für mein Vorhaben und hoffe Ihr könnt mir weiterhelfen. Ich benutze Ubuntu 14.04.5 LTS mit Apache2 und möchte darüber einen Reverse Proxy umsetzen. Der Apache Server ist extern erreichbar über Port 80, die interen Server sollen nur über den Reverse Proxy erreichbar sein.

Zur Erläuterung:
Beim Aufruf von http://test.domain.de soll die interne Webseite http://192.168.178.11 angezeigt werden
=> funktioniert
Beim Aufruf von http://test.domain.de/cam2/ soll die interne Webseite http://192.168.178.12 angezeigt werden
=> funktioniert leider nicht
Beim Aufruf von http://test.domain.de/cam3/ soll die interne Webseite http://192.168.178.13 angezeigt werden
=> funktioniert leider nicht

Zum Test habe ich eine 2. Subdomain für cam2 eingerichtet
Beim Aufruf von http://cam2.domain.de wird die Webseite http://192.168.178.12 angezeigt.

Ich vermute den Fehler in meiner Konfiguration bei dem Aufruf von http://test.domain.de/cam2/ ändert sich in meinem Browser die Anzeige immer wieder zu http://test.domain.de und bleibt nicht auf dem Verzeichnis

Hier die default.conf
Code: Select all
<VirtualHost *:80>
   ServerName test.domain.de
   ProxyRequests      Off
   ProxyPreserveHost   On
   <Location "/">
      ProxyPass         "http://192.168.178.11/"
      ProxyPassReverse   "http://192.168.178.11/"
   </Location>
   <Location "/cam2/">
      ProxyPass         "http://192.168.178.12/"
      ProxyPassReverse   "http://192.168.178.12/"
   </Location>
   <Location "/cam3/">
      ProxyPass         "http://192.168.178.13/"
      ProxyPassReverse   "http://192.168.178.13/"
   </Location>
</VirtualHost>
<VirtualHost *:80>
   ServerName cam2.domain.de
   ProxyRequests      Off
   ProxyPreserveHost   On
   <Location "/">
      ProxyPass         "http://192.168.178.12/"
      ProxyPassReverse   "http://192.168.178.12/"
   </Location>
</VirtualHost>


Ich hoffe ich könnt mein Problem verstehen und dass Ihr mir weiterhelfen könnt.

Danke schonmal :wink:
SPILIHP1980
 
Posts: 2
Joined: 10. May 2017 13:01
XAMPP version: 2
Operating System: Ubuntu

Re: Reverse Proxy mit mehreren Zielen eine Domain - mod_prox

Postby Nobbie » 10. May 2017 20:16

1) An Stelle der Location Anweisungen würde ich diese Syntax bevorzugen:

statt

Code: Select all
  <Location "/cam2/">
      ProxyPass         "http://192.168.178.12/"
      ProxyPassReverse   "http://192.168.178.12/"
   </Location>


einfach

Code: Select all
ProxyPass  /cam2/       http://192.168.178.12/
ProxyPassReverse   /cam2/ http://192.168.178.12/


2) Wieso hast Du

Code: Select all
   ProxyPreserveHost   On


gesetzt?


3) Wenn im Browser die URL verändert wird, ist das zwangsläufig nicht mit dieser Konfiguration erklärbar. Irgendwo wird ein Redirect ausgeführt (von der CAM??), aber hier diese Konfiguration ist nicht verantwortlich dafür. Du musst in jedem Fall diesen Redirect finden, um die angemessene Konfiguration vorzunehmen.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Reverse Proxy mit mehreren Zielen eine Domain - mod_prox

Postby SPILIHP1980 » 11. May 2017 07:00

Zu 1) Syntax habe ich jetzt angepasst

Zu 2) Gesetzt habe ich das, da es auch verschiedenen Beispielen aktiviert ist. Ist jetzt nicht mehr aktiviert

Zu 3) Du hast Recht es wird anscheinend ein Redirect ausgeführt.
    1. Bei dem Aufruf von http://test.domain.de wird die Seite von http://192.168.178.11 angezeigt
    => in meinem Fall ist dies eine Fritz!Box
    2. Bei dem Aufruf von http://test.domain.de wird mir kurz im Brower die URL http://test.domain.de/cam1/ angezeigt und im Inhaltsfenster die Seite von der Fritz!Box, mit der Meldung das die angegebene URL nicht gefunden werden kann
    => kurz darauf werde ich wieder zur Startseite der Fritz!Box an auf die URL http://test.domain.de/ weitergeleitet
    3. Wenn ich im lokalen Brower die Adresse http://192.168.178.12 aufrufe werde ich zur URL http://192.168.178.12/doc/page/login.asp weitergeleitet
    => In den Quelltext dieser Seite kann ich noch folgende Links finden:
    ==> ../ui/css/ui.css?version=
    ==> ../script/lib/seajs/config/sea-config.js?version=

Ich habe bisher keine Idee wie ich dieses Verhalten ändern kann.
SPILIHP1980
 
Posts: 2
Joined: 10. May 2017 13:01
XAMPP version: 2
Operating System: Ubuntu

Re: Reverse Proxy mit mehreren Zielen eine Domain - mod_prox

Postby Nobbie » 11. May 2017 11:25

SPILIHP1980 wrote:1. Bei dem Aufruf von http://test.domain.de wird die Seite von http://192.168.178.11 angezeigt
=> in meinem Fall ist dies eine Fritz!Box
2. Bei dem Aufruf von http://test.domain.de wird mir kurz im Brower die URL http://test.domain.de/cam1/ angezeigt und im Inhaltsfenster die Seite von der Fritz!Box, mit der Meldung das die angegebene URL nicht gefunden werden kann
=> kurz darauf werde ich wieder zur Startseite der Fritz!Box an auf die URL http://test.domain.de/ weitergeleitet


Hää?? Das ist doch ein Widerspruch, hast Du irgendetwas vergessen?? Du gibst jeweils http://test.domain.de ein und es passieren zwei verschiedene Dinge????

Was mir noch aufgefallen ist, Du kannst natürlich NICHT für Location "/" einen ReverseProxy einrichten und im selben Kontext dann noch für Location "/cam2/" (bzw. auch "/cam3/"). Das ist ja Quatsch, der erste Proxy "/" zieht doch IMMER, die anderen werden überhaupt nicht ausgeführt. Wenn Du also http://test.domain.de/cam2/ eingibst, wird NICHT der ReverseProxy 192.168.178.12 aufgerufen, sondern SELBSTVERSTÄNDLICH darüber der ReverseProxy 192.168.178.11 mit dem Ordner /cam2/ angehängt, also insgesamt http://192.168.178.11/cam2/ ==> wahrscheinlich ist das genau das, was Du oben (fehlerhaft) zu erklären versuchst, in Deiner Beschreibung fehlt aber /cam2/ in der URL. Aber insgesamt ist das Konzept falsch, das geht natürlich so nicht. Ein ReverseProxy auf "/" fängt alles ab.

SPILIHP1980 wrote:3. Wenn ich im lokalen Brower die Adresse http://192.168.178.12 aufrufe werde ich zur URL http://192.168.178.12/doc/page/login.asp weitergeleitet


Ein typisches Problem bei ReverseProxys, fest verdrahtete Redirects. Das bekommt man aber bei richtiger Konfiguration in den Griff, ich habe von hier aus natürlich keine Ahnung, ob der login notwendig ist oder wie oder was. Insgesamt ist Dein Konzept ja sowieso fehlerhaft, weil Du alle ReverseProxys auf Verzeichnisnamen "/", "/cam2" und "/cam3/" abbilden willst, das geht so aber nicht, weil der erste ReverseProxy "/" alles wegfrisst. Ich würde Dir empfehlen, lege für JEDEN ReverseProxy einen eigenen VirtualHost an, also beispielsweise cam2.domain.de und cam3.domain,de usw. und definiere dort jeweils nur einen einzige ReverseProxy auf "/". Das ist die einfachste und am wenigsten fehlerträchtige Variante. Du brauchst also drei VirtualHosts, statt test.domain.de würde ich dann auf 192.168.178.11 den VirtualHost fritzbox.domain.de wählen und wie schon angedeutet, die beiden anderen mit cam2.domain.de und cam3.domain.de festlegen. In den VirtualHosts stehen dann einfach die jeweiligen ReverseProxy Anweisungen auf "/" drin und als Ziel die jeweilige IP (11, 12 und 13):

Code: Select all
<VirtualHost *:80>
      ServerName fritzbox.domain.de
      ProxyPass    /  http://192.168.178.11/
      ProxyPassReverse / http://192.168.178.11/
</VirtualHost>
<VirtualHost *:80>
      ServerName cam2.domain.de
      ProxyPass    /  http://192.168.178.12/
      ProxyPassReverse / http://192.168.178.12/
</VirtualHost>
<VirtualHost *:80>
      ServerName cam3.domain.de
      ProxyPass    /  http://192.168.178.13/
      ProxyPassReverse / http://192.168.178.13/
</VirtualHost>
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 28 guests