Ich habe Apache als meinen Webserver eingerichtet und Tomcat ist über an Apache angeschlossen mod_jk
, sodass der Benutzer nie mit Tomcat interagiert.
Ich habe SSL auf Apache eingerichtet und kann es mit erreichen https://localhost
, aber wenn ich versuche, unter auf meine Anwendung zuzugreifen https://localhost/app
, erhalte ich eine directory not found
Fehlermeldung.
Der Haken besteht darin, dass ich es problemlos erreichen kann, wenn ich normales http verwende:http://localhost/app
Was muss ich bearbeiten, damit diese Verbindung funktioniert?
- Ich habe den AJP-Anschluss auskommentiert in
server.xml
- Ich habe meinen virtuellen Host hinzugefügt zu
httpd.conf
Was vermisse ich?
Antwort1
http und https werden von Apache als unterschiedliche virtuelle Server betrachtet. Haben Sie Ihren Reverse-Proxy unter beiden virtuellen Hosts eingerichtet?
Antwort2
Sie müssen Ihr Setup von http auf https replizieren. Wenn Sie einen http-Connector haben, benötigen Sie den AJP-Connector nicht.
schauen Sie, wie es eingerichtet ist – wahrscheinlich führt es einen Proxy-Pass durch oder verwendet eine RewriteRule mit dem P am Ende, das ein Proxy ist.
Antwort3
Ihre Definition für Arbeiter könnte falsch sein. Überprüfen Sie workers.properties auf den Typ der Arbeit. Wenn ajp13, setzen Sie Ihren ajp-Abschnitt in Tomcat wieder zurück, wie er war. mod_jk verwendet normalerweise ajp13 als Typ.
Antwort4
Wenn Sie mod_jk verwenden, benötigen Sie den AJP-Connector in Tomcat.
Wenn der Worker ein Konfigurationsproblem hat, antwortet Apache in den meisten Fällen mit einem 500-Fehler (Serverfehler). Wenn Sie eine 404 erhalten, liegt das eher daran, dass die Anfrage nicht an den Tomcat-Server weitergeleitet wird (oder die URL aus Tomcat-Sicht ungültig ist). Überprüfen Sie, ob der JkMount in Ihrer Apache-Konfiguration vorhanden und korrekt ist (für den Port 443).
Um Probleme mit mod_jk zu debuggen, aktivieren Sie die Debug-Protokolle in mod_jk und sehen Sie sich die Apache-Protokolle an. Fügen Sie diese Zeilen in die mod_jk-Konfiguration ein (im Allgemeinen in jk.conf):
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel-Debug
Sie sollten beim Start einige Protokolle und einige interessante Details zu jeder Anfrage sehen.
Ich habe dieses Setup für Apache2 + SSL + JBoss durchgeführt. Weitere Details und Optimierungstipps finden Sie in Bereitstellen einer J2EE-Anwendung hinter einem Apache-Server in einer Produktionsumgebung