Apache mod_proxy

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

Apache mod_proxy

Postby MoZjo » 28. March 2017 16:42

Hallo liebe Apache Friends,

ich stehe vor einem Rätsel. Ich benutze auf einem Linux CentOS einen Squid und Apache Server. Der Squid nimmt alle Anfragen entgegen und verteilt diese an die jeweiligen Server, wie es sein Job verlangt. Beim Aufruf einer bestimmten URL leitet der Squid die Anfrage auf den Server eigenen Port 8084 auf die der Apache hört. Ich habe eine Datei "weiterleitung.conf" in der folgendes steht:

Listen 8084

<VirtualHost *:8084>

ProxyPreserveHost On
ProxyPass / http://zieladresse.de:80 (anderer physikalischer Server)
ProxyPassReverse / http://zieladresse.de:80 (anderer physikalischer Server)

</VirtualHost>

Sprich der squid leitet auf den Port weiter, dort übernimmt der Apache und der soll mich auf die gewünschte Adresse weiterleiten.
Ich bekomme aber lediglich als Antwort eine 503 Service Temporaly Unavailable.
Über den Squid ist das nicht möglich zumindest nicht mit internen Befehlen und Perl Skripte die ich als Neuling versucht habe, haben nicht gefruchtet. Über den Apache habe ich die ein oder andere Rewrite Regel benutzt und würde ich normalerweise auch hier benutzen, aber da sich die URL die ich eingebe nicht ändern soll, muss ich das nach meinem Verständnis über das mod_proxy lösen.

Ich hoffe ich konnte mein Problem verdeutlichen und hoffe ihr könnt mir helfen. Vielleicht hab ich auch nur nen Salat im Kopf und die Lösung ist einfacher als gedacht.

Liebe Grüße und schonmal Danke

MoZjo
MoZjo
 
Posts: 6
Joined: 22. November 2013 10:42
Operating System: CentOS

Re: Apache mod_proxy

Postby Nobbie » 28. March 2017 16:52

Du hast dort einen "Reverse Proxy" definiert, das ist KEINE(!) Weiterleitung. Wieso hast Du die Option ProxyPreserveHost gesetzt (alleine das kann schon eine Fehlerursache sein)?

Vom Konstrukt her macht das nicht viel Sinn, was ich da sehe. Was auch immer bezweckt ist, ich kann es nicht erkennen. VIelleicht formulierst Du mal in normaler Prosa, was Du eigentlich haben willst (ohne mal an Squid oder Apache zu denken, einfach wie ein Anwender ein Problem schildern würde). Vielleicht gibt es da ja eine Lösung, die ggf. aber vollkommen anders aussieht.
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04

Re: Apache mod_proxy

Postby MoZjo » 28. March 2017 17:00

Hi,

:( ... ich scheine viel zu viel durcheinander zu würfeln in meiner Verzweiflung.
Also aus Anweder-Sicht:
Ich möchte bei der Eingabe von "http://service-adresse.de" auf den Server "http://LIVESERVER:8181/bla/bla/bla" weitergeleitet werden. Zumindest der Inhalt soll erscheinen, die URL "http://service-adresse.de", soll weiterhin im Browser sichtbar sein.
Das ist auch schon alles.
MoZjo
 
Posts: 6
Joined: 22. November 2013 10:42
Operating System: CentOS

Re: Apache mod_proxy

Postby Nobbie » 28. March 2017 18:39

Das kriegen wir hin, das ist genau Idee eines "Reverse Proxys", aber Squid ist da vollkommen außen vor.

Um es nochmal klar zu stellen: eine "Weiterleitung" ist das nicht (und das geht auch nicht, wenn Du nicht willst, dass die Browserzeile angepasst wird). Da wird nichts weitergeleitet, sondern quasi "durchgereicht". Der vordere Server (bei Dir ist das server-adresse.de) holt selbst den Inhalt des hinteren Servers (das ist bei Dir LIVESERVER:8181) ab, d.h. der HTTP Request auf den hinteren LIVESERVER wird nicht(!) vom Browser durchgeführt (der weiß davon gar nichts und das ist ja auch Sinn der Übung), sondern der vordere Server führt den Request aus, holt alle Daten und schiebt sie dann durch zum Browser und tut damit so, als wären es seine eigenen Webseiten - und deswegen wird auch vom Browser die Zeile nicht angepasst, dann da steht immer, wo die Daten herkommen. Der Browser weiß aber nicht, dass der vordere Server die Daten woanders her holt, ist dem Browser ja auch egal.

Im Prinzip brauchst Du erst mal nur diese eine einzige Zeile dafür:

ProxyPass / http://LIVESERVER:8181/bla/bla/bla

Alles weitere muss man dann sehen, da gibt es diverse Möglichkeiten für Problemchen. Aber das kann ich so ohne alles nicht sagen. Erst einmal ausprobieren. Und das ganze ohne Squid.

Deine LISTEN Anweisung ist da auch vollkommen falsch, die braucht man nicht. Du brauchst auch eigentlich keinen VirtualHost, es sei denn, der vordere Server soll noch mehr machen als nur durchleiten. Aber da fehlt im Moment der ServerName, unter dem der vordere Server erreichbar sein soll, daher vermute ich, dass Du gar keinen VIrtualHost brauchst. Die ProxyPass Anweisung kannst Du ganz fett schon vorne in die httpd.conf schreiben, ohne irgendetwas drumherum.
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04

Re: Apache mod_proxy

Postby MoZjo » 29. March 2017 11:29

Hi Nobbie,
vielen Dank für deine ausführliche Antwort, bin dir dafür sehr dankbar.
Ich habe mir deine Ratschläge zu Herzen genommen und die Zeile direkt in die http.conf geklopft. Leider ohne Erfolg :(
Ich bekomme immer noch ein 503 Service Temporarily Unavailable.
Den Squid hatte ich nur eingebunden, da wir bei uns im Haus den Squid als Reverse Proxy betreiben. Über ihn laufen Anfragen unserer Domain und Subdomain.
Über eine neu angelegte Subdomain soll nun ein URL erreicht werden. Da die URL "hässlich" ist wünscht man sich bein uns die subdomain die das schön verpackt.

Sprich-> Squid bekommt http://webservice-test.blabla.de -> schaut bei sich nach und sieht, aha das ist der TESTSERVER (vorherigen Post Live genannt) -> und leitet ihn auf die 80 des apache auf dem TESTSERVER ... hier soll nun die magie passieren und er soll sich einfach den inhalt der URL holen und zurück geben ....

auf dem TESTSERVER hab ich das in die httpd.conf eingetragen und zwar so: ProxyPass / http://TESTSERVER:8181/bla/bla/blub
und bekomme nun beim Aufruf von http://webservice-test.blabla.de -> 503 Service Temporarily Unavailable.

Was mache ich noch falsch?
Danke dir für deine Geduld und Hilfe ^^
MoZjo
 
Posts: 6
Joined: 22. November 2013 10:42
Operating System: CentOS

Re: Apache mod_proxy

Postby MoZjo » 29. March 2017 15:33

UPDATE*
Nachdem ich auf der Firewall eine Blockierung aufgehoben habe, fruchtet der Befehl und ich werde "weitergeleitet" ... jedoch verändert sich die URL mit.
ProxyPass / http://TESTSERVER:8181/bla/bla wird erreicht, aber steht dann auch so in der URL-Browser-Leiste :(.
Wo liegt mein Fehler? Ideen?
MoZjo
 
Posts: 6
Joined: 22. November 2013 10:42
Operating System: CentOS

Re: Apache mod_proxy

Postby Nobbie » 29. March 2017 21:38

MoZjo wrote:Wo liegt mein Fehler? Ideen?


Keine Ahnung, bei mir funktioniert das ausnahmslos immer richtig. Hier ist die offizielle Doku, vielleicht findest Du dort ja etwas: https://httpd.apache.org/docs/2.4/mod/m ... #proxypass

MoZjo wrote:auf dem TESTSERVER hab ich das in die httpd.conf eingetragen und zwar so: ProxyPass / http://TESTSERVER:8181/bla/bla/blub


Das ist allerdings vollkommen falsch und kaputt, weiter oben gibt es nicht einmal einen "TESTSERVER", sondern nur einen "LIVESERVER" (oder auch mal einen "zielserver") und sowieso ist es total falsch, dort die EInträge zu machen. DIe gehören in den vorgelagerten Server. Aber da TESTSERVER hier sowieso keiner kennt, kannst nur Du sagen, was das alles bedeutet. Das ist grausames Gehacke, sorry, aber da kann ich beim besten Willen nicht ansatzweise helfen. Du solltest die blablubbs und TESTSERVER usw. durch echte, reale Namen ersetzen, so versteht niemand, was da Sache ist. Ich denke Du verstehst, dass das absolut sinnlos ist und nur nervt. Es ist schon so schwierig genug, Ratschläge zu geben ohne selbst am Rechner zu sitzen, aber wenn man dann so ein Zeug gezeigt bekommt, dann geht wirklich gar nichts mehr. Du hast alle Infos, die Du haben musst und nun musst Du es nur noch richtig anwenden. Ich habe keine Lust mehr auf blablubb-TESTSERVER und wilde Ports (die auch nicht übereinstimmen, mal 80, mal 8184, mal 8181 .... grauenhaft).
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04

Re: Apache mod_proxy

Postby MoZjo » 30. March 2017 07:36

Guten Morgen,

das Durcheinander mit den Server-Namen ist wirklich unschön, dachte für das rein logische Prinzip und das Verständnis des Szenarios sind die egal. Hatte jeden Post separat betrachtet und immer wieder NEU erklären wollen. Hatte sogar in einem Beitrag den Bezug von Live=Testserver erklärt.Naja. Aber ich danke dir trotzdem für die Tipps und Denkanstöße, die waren und sind sehr hilfreich.
Ich werde das ganze durchtesten bis ich den Fehler entdeckt habe. Die Lösung kommt dann hier rein, damit das Rätsel auch mal seine Auflösung bekommt :D.
Danke
MoZjo
 
Posts: 6
Joined: 22. November 2013 10:42
Operating System: CentOS

Re: Apache mod_proxy

Postby Nobbie » 30. March 2017 10:45

MoZjo wrote:das Durcheinander mit den Server-Namen ist wirklich unschön, dachte für das rein logische Prinzip und das Verständnis des Szenarios sind die egal.


Das ist ein Irrtum, das diametrale Gegenteil davon ist richtig: grundsätzlich nur reale Daten angeben, grundsätzlich alles exakt genauso beschreiben, wie es auf dem Rechner vorliegt, nichts maskieren oder anders benennen, nichts abkürzen, nichts weglassen, nichts dazu dichten, sondern absolut präzise und genau beschreiben, welche Situation vorliegt. Egal wie aufwändig das ist, egal wieviel Arbeit das bedeutet. Dann und nur dann hat man als "remote" Helfer halbwegs eine Chance, das Scenario inkl. Problematik zu erfassen.

Du musst Dir vorstellen, ich weiß NICHTS, NULL KOMMA NULL über Deine Umgebung und bei allen Details, die Du weglässt, umbenennst, "abstrahierst" usw. etc. pp, besteht die riesengroße Gefahr (und genau das passiert auch in weit über 90% aller Fälle), dass die generelle Fehlerursache aus Versehen nicht mehr erkennbar ist, weil Du sie unwissentlich maskiert hast. Es ist wirklich wahnsinnig schwierig ein Problem zu lösen, ohne auch nur den Monitor zu sehen oder mal auf eine Tastatur tippen zu können. Du siehst und weißt ALLES, und dennoch findest Du das Problem nicht - wie soll das gehen, wenn Du nichts sieht und nichts weißt? Ausnahmslos alles, was ich weiß, ist von Dir "gefiltert" und in wenigen Worten geschrieben. Ich kenne nur diese paar Wörter, die dann auch noch offensichtlich widersprüchliche Aussagen treffen, das ist vollkommen unmöglich, da einen roten Faden zu erkennen. Es bringt wirklich nur Probleme, wenn man versucht, selbst irgendetwas zu abstrahieren oder der Einfachheit halber wegzulassen oder anders darzustellen, als es wirklich ist. Und wenn man noch so überzeugt ist, das wäre für den Kontext egal - fast immer ist es keinesfalls egal.
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 11 guests