Erfahren Sie, wie Sie Tomcat 5.5 hinter Apache 2 konfigurieren, um Ihre Webanwendung per `mod_rewrite` im Root-Kontext bereitzustellen und dabei `mod_jk` für die Anfrageverarbeitung zu nutzen.
---
Dieses Video basiert auf der Frage https://stackoverflow.com/q/208261/ gestellt von dem Nutzer 'John Montgomery' ( https://stackoverflow.com/u/5868/ ) sowie auf der Antwort https://stackoverflow.com/a/208549/ bereitgestellt von dem Nutzer 'John Montgomery' ( https://stackoverflow.com/u/5868/ ) auf der Website 'Stack Overflow'. Vielen Dank an diese großartigen Nutzer und die Stackexchange-Community für ihre Beiträge.
Besuchen Sie diese Links, um den Originalinhalt und weitere Details zu sehen, z. B. alternative Lösungen, aktuelle Entwicklungen zum Thema, Kommentare, Versionsverlauf usw. Der ursprüngliche Titel der Frage lautete beispielsweise: How do I get tomcat 5.5 to run behind apache 2 with mod_rewrite passing through requests to mod_jk and stripping app context?
Außerdem steht der Inhalt (außer Musik) unter der Lizenz CC BY-SA https://meta.stackexchange.com/help/l...
Der ursprüngliche Fragenbeitrag steht unter der Lizenz 'CC BY-SA 2.5' ( https://creativecommons.org/licenses/... ), und der ursprüngliche Antwortbeitrag steht unter der Lizenz 'CC BY-SA 2.5' ( https://creativecommons.org/licenses/... ).
Falls Ihnen irgendetwas auffällt oder Unstimmigkeiten bestehen, schreiben Sie mir bitte an vlogize [AT] gmail [DOT] com.
---
Wie man Tomcat 5.5 hinter Apache 2 mit mod_rewrite und mod_jk betreibt
Wenn Sie eine Webanwendung auf Tomcat 5.5 einrichten und diese hinter Apache 2 betreiben möchten, sind Sie hier genau richtig. Diese Anleitung zeigt Ihnen, wie Sie mittels mod_rewrite Ihre Anwendung im Root-Verzeichnis Ihrer Seite bereitstellen können, ohne den Kontextpfad. Zudem erklären wir, wie Sie mod_jk korrekt konfigurieren, um die Anfragen nahtlos weiterzuleiten.
Das Problem
Viele Entwickler möchten eine Webanwendung, die auf Tomcat läuft (z. B. unter dem Pfad /myapp), über die Root-URL (z. B. /) erreichbar machen. Dies ist besonders hilfreich, wenn statische Inhalte weiterhin direkt über Apache ausgeliefert werden sollen, und gleichzeitig eine saubere URL-Struktur für die Webanwendung erhalten bleiben soll.
Die übliche Situation sieht so aus:
Ihre Anwendung ist unter /myapp deployed.
Apache soll als Reverse Proxy fungieren und die Anwendung unter / ausliefern.
Statische Inhalte sollen direkt von Apache bedient werden, während dynamische Anfragen an Tomcat gehen.
Apache mit mod_rewrite konfigurieren
Um dies zu erreichen, nutzen Sie das mod_rewrite-Modul von Apache. Hier eine Übersicht der nötigen Schritte und Konfigurationen:
1. JkMount-Konfiguration
Stellen Sie zunächst sicher, dass Ihr Tomcat-Worker in Apache richtig eingerichtet ist:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
2. Rewrite-Modul aktivieren
Vergewissern Sie sich, dass das Modul mod_rewrite in Ihrer Apache-Konfiguration aktiviert ist:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
3. Statische Inhalte ausliefern
Definieren Sie Rewrite-Regeln, damit statische Ressourcen (wie Bilder oder Stylesheets) direkt vom Apache ausgeliefert werden und nicht durch Tomcat laufen:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
4. Andere Anfragen umschreiben
Leiten Sie die übrigen Anfragen ohne Kontextpfad an Tomcat weiter:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
Hinweis zur Reihenfolge der Module
Historisch mit Apache 1 war es wichtig, dass mod_jk vor mod_rewrite geladen wurde. In Apache 2 scheint die Reihenfolge etwas flexibler zu sein, allerdings können bei komplexen Umschreibungen weiterhin Probleme auftreten.
Die Lösung: Forward URI Kompatibilität
Nach erfolglosen Versuchen mit den Rewrite-Regeln wurde entdeckt, dass die Hinzufügung einer speziellen JkOption das Problem löst. Fügen Sie Folgendes hinzu:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
Was bewirkt diese Option?
Diese Option weist mod_jk an, die umgeschriebene URL bei der Anfragebearbeitung zu berücksichtigen. Sie stellt eine alte Verhaltensweise aus Apache 1 wieder her, die bei der korrekten Handhabung von Kontextpfaden hilft.
Fazit
Die Konfiguration von Tomcat 5.5 hinter Apache 2 mit Auslieferung Ihrer Webanwendung im Root-Pfad kann zunächst komplex wirken. Mit den richtigen Einstellungen für mod_rewrite und mod_jk lässt sich jedoch eine nahtlose Integration realisieren.
Das Hinzufügen von JkOptions + ForwardURICompat war in diesem Fall der Schlüssel, jedoch sind weitere Hinweise oder „korrektere“ Ansätze von anderen Entwicklern jederzeit willkommen und helfen, das Verständnis insgesamt zu vertiefen.
Teilen Sie gerne Ihre Erfahrungen oder Konfigurationen in den Kommentaren unten!
Информация по комментариям в разработке