Apache-Anfragen (Port 80) an Tomcat (Port 8080) weiterleiten?

8

Ich möchte eine Tomcat-Anwendung über eine reguläre Website-URL ausführen, z www.xyz.com. Ich möchte, dass das Stammverzeichnis dieser Domäne als Basisverzeichnis für die Webanwendung fungiert, sodass jede Anforderung zu www.xyz.com/a/b/cwird www.abc.com:8080/myApp/a/b/c. Im Idealfall kann ich dies transparent und nur für bestimmte Webanwendungen tun.

www.abc.com:8080 sollte immer noch auf Anfragen antworten.

Was muss ich tun, um dies zu erreichen?

Stefan Kendall
quelle

Antworten:

14
ProxyPass        / http://www.abc.com:8080/myApp/
ProxyPassReverse / http://www.abc.com:8080/myApp/

Lesen Sie mehr über mod_proxy

ptman
quelle
Dies ist die beste Lösung, um dies zu tun
Mike
1
Um die Seite "nur für bestimmte Webanwendungen" zu adressieren, vertiefen Sie einfach den Umleitungspfad. Also: ProxyPass / a / b / c abc.com:8080/myApp/a/b/c ProxyPassReverse / a / b / c abc.com:8080/myApp/a/b/c Um alle außer bestimmten Pfaden zu vertreten, gehen Sie die ProxyPassReverse-Zeile, aber ersetzen Sie die ProxyPass-Zeilen durch RewriteRules (stellen Sie sicher, dass Sie die Option [P] zum Proxy verwenden, anstatt sie umzuleiten), und legen Sie frühere Regeln fest, um diese Pfade nicht zu vertreten. RewriteRule / notproxied - [L] RewriteRule /(.*) abc.com:8080/myApps/$1 [P] ProxyPassReverse / abc.com:8080/myApp
Jeremy M
Wo füge ich diese Zeilen hinzu?
Mina Michael
@MinaMichael In der Dokumentation zu mod_proxy heißt es: Kontext: Serverkonfiguration, virtueller Host, Verzeichnis
ptman
3

Eine einfachere Methode hierfür ist das Hinzufügen eines Virtual Host-Eintrags in Ihrer Apache-Conf-Datei. Fügen Sie normalerweise Folgendes in / etc / httpd / conf hinzu und fügen Sie am Ende des Abschnitts Virtual Host Folgendes hinzu:

<VirtualHost X.X.X.X:80>
ServerName tomcatpage.yourdomain.com
ServerAlias tomcatpage.yourdomain.com
Redirect permanent / http://tomcatpage.yourdomain.com:8080/
</VirtualHost>

Starten Sie Ihren Apache-Dienst neu und Sie sind fertig.


quelle
3

Sie können dazu mod_rewrite in Apache verwenden. Laden Sie mod_rewrite in Ihren Apache und fügen Sie in Ihrem vhost www.xyz.com die folgende Regel hinzu:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1

Dies sollte die Magie tun.

Weitere Infos zu mod_rewrite hier .

BEARBEITEN : Um den Site-Namen in den Browsern beizubehalten, verwenden Sie auch mod_proxy, indem Sie einfach ein [P] am Ende der RewriteRule anhängen:

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1 [P]

Dadurch wird Apache gezwungen, als Proxy für diese URL zu fungieren, anstatt nur die URL neu zu schreiben.

Marco Ramos
quelle
Dies führt dazu, dass der Browser tatsächlich umleitet. Dies funktioniert, aber ich würde es vorziehen, wenn die Site www.xyz.comvon der Benutzerseite aus erscheint.
Stefan Kendall
1
Verwenden Sie auch mod_proxy und fügen Sie am Ende der RewriteRule ein [P] wie folgt hinzu: RewriteRule ^ / (. *) abc.com:8080/myApp/$1 [P]. Ich habe auch die Antwort oben bearbeitet, um diese Informationen aufzunehmen.
Marco Ramos