Apache VirtualHost Proxy mit einem Unterverzeichnis

13

Derzeit haben wir einen IIS-Server als unseren primären Webserver. Wir implementieren an seiner Stelle einen Apache-Server, müssen jedoch weiterhin auf den IIS-Server zugreifen können. In der Regel ist dies eine einfache Sache, da Apache2 eine Subdomain an diesen Server weiterleiten kann.

Unser Problem ist jedoch Folgendes: Wir verwenden dotnetCharting auf dem IIS-Server, und die Lizenzierung ist an den Domänennamen gebunden. Damit dotnetCharting funktioniert, muss eine weitere Lizenz erworben werden.

Meine Frage ist, kann Apache2 Proxy ein Unterverzeichnis? Kann beispielsweise "www.example.com/subdir" auf den IIS-Server verweisen? Es scheint, als sollte es nicht unmöglich sein, aber ich kann keine Lösung dafür finden.

SuperJer
quelle

Antworten:

19

Sicher. Aber sei vorsichtig; Viele Webanwendungen sind nicht dafür geeignet, dass sich der URL-Pfad ändert. Wird die Anwendung derzeit in einem Unterverzeichnis verwendet?

# You'll probably want this to maintain the host mapping in IIS
ProxyPreserveHost On
# Swap in the IP address or internal host name of your IIS server:
ProxyPass /subdir/ http://192.0.2.100/subdir/

Oder, wenn Sie den URL-Pfad ändern, bedenken Sie, dass viele Anwendungen aufgrund der absoluten Pfade für Ressourcen (CSS, Javascript, Bilder) Probleme damit haben werden:

ProxyPass /subdir/ http://192.0.2.100/
ProxyPassReverse /subdir/ http://192.0.2.100/
Shane Madden
quelle
Perfekt! Das war der Trick in meiner Testumgebung. Derzeit können Sie intern die IP-Adresse des Servers eingeben und unseren internen Proxy verwenden, um auf den Server zuzugreifen, und alles (mit Ausnahme von dotnetcharting) funktioniert einwandfrei. Ich gehe daher nicht davon aus, dass die Anwendung fehlschlägt, wenn wir sie mit dieser Methode per Proxy übertragen. Sehr geschätzt!
SuperJer
1
Ich musste den nachgestellten wegzulassen /von subdir(wie folgt aus : /subdir). Andernfalls domain.com/subdirführt dies zu einem Anwendungsfehler (500). Wenn der Schrägstrich enthalten wäre ( domain.com/subdir/), würde er den Proxy korrekt darstellen , aber das ist nicht der Effekt, den ich gesucht habe.
OneHoopyFrood
3

Sicher.

  1. Aktivieren Sie mod_proxy mod_proxy_http
  2. Setzen Sie die folgende Anweisung in Ihrem Apache VHost

    ProxyPass /subdir http://iis.server/.../
    ProxyPassReverse /subdir http://iis.server/.../
    

Beachten Sie, dass das letzte "/" obligatorisch ist.

Weitere Informationen erhalten Sie unter http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

NCH
quelle
0

Der letzte Schrägstrich am Ende ist NICHT obligatorisch. Ich hatte es so eingerichtet

ProxyPass /dir http://exmpale.com/dir/ 

ProxyPassReverse /dir http://exmpale.com/dir/ 

und die oberste Ebene funktionierte, aber alles, was sich unter der obersten befand, funktionierte nicht.

Ich habe es geändert und alles hat funktioniert.

Danke für die Fehlinformation !!!

ProxyPass /dir http://exmpale.com/dir

ProxyPassReverse /dir http://exmpale.com/dir
genervter Linux-Aussenseiter
quelle
1
Warum stimmen die Leute dem nicht zu? Es war genau das Problem, das ich hatte. Sie müssen entweder beide URLs mit einem Schrägstrich beenden oder beide URLs ohne Schrägstrich lassen ... zumindest für mich hat es geholfen, wenn es um Unterverzeichnisse ging;)
Jannik