Reverse-Proxy - Proxy-Pass verstehen - Apache mod_proxy

Reverse-Proxy - Proxy-Pass verstehen - Apache mod_proxy

ich verwende Tomcat auf meinem Linux-Server und möchte hierfür einen Reverse-Proxy verwenden. Nachdem ich das Handbuch in Apache für mod_proxy gelesen hatte, verstand ich den /Pfad im Proxypass nicht wirklich.

ich mache mal ein kleines Beispiel. das Verzeichnis für meinen Tomcat ist /tomcat/webapp. Ist dann folgende Konfiguration richtig?:

<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ProxyRequests Off
ProxyPass /tomcat/webapp         http://127.0.0.1:8080
ProxyPassReverse /tomcat/webapp  http://127.0.0.1:8080
</VirtualHost> 

ich wäre dankbar, wenn mir jemand mit Erfahrung weiterhelfen könnte.

Antwort1

Theoretisch ProxyPassfunktioniert es, egal welche Direktive Sie wählen, auch wenn Sie den Proxy http://example.com:8080/webapp/als wählen http://example.com/foo/bar/baz/.

Wenn Ihre Anwendung jedoch absolute Pfade in Hyperlinks verwendet, ist es besser, den gleichen URI-Pfad auf beiden zu verwenden.ApacheUndKateroder Sie werden Probleme haben wie indiese Frage. Also:

  • Wenn Ihre Anwendung gut geschrieben ist, wählen Sie Ihre bevorzugte URL und passen Sie die Bereitstellung der Webanwendung auf Tomcat entsprechend an.
  • wenn Ihre Anwendung schlecht geschrieben ist (z. B. einige fest codierte Pfade enthält wie indiese Frageverstelle dieApachePfad, damit er zum fest codierten Bereitstellungspfad passt.

In jedem Fall sollten Sie Folgendes verwenden:

ProxyPass "/path/to/webapp/" "http://127.0.0.1:8080/path/to/webapp/"

PS: Da Sie offensichtlichTomcat auf zwei Ports ausführenist es besser, wenn Sie der Webanwendung mitteilen, dass sie über einen Proxy kommuniziert und auf den Port 8443über SSL zugegriffen wird:

<Connector port="8080"
           proxyName="example.com"
           proxyPort="80"
           redirectPort="443" />
<Connector port="8443"
           proxyName="example.com"
           proxyPort="443"
           scheme="https" secure="true" />

8443damit die Webanwendung keine nutzlosen Weiterleitungen von Port zu Port generiert 443.

verwandte Informationen