aus HisWiki
2.1.5.4.2 Umleitung von Requests vom Apache zu Tomcat

Die Konfiguration des Apache zur Anbindung an Tomcat ist im tomcat-apache-howto dokumentiert, der sich in jeder Download-Version des offiziellen Tomcat   befindet (webapps/doc).

Die Umleitung von Requests vom Apache zum Tomcat kann auch auf zwei Rechnern geschehen, z.B. um den Apache-Server in der DMZ und den Tomcat-Server im Intranet zu betreiben. Wir empfehlen letzteres aus Sicherheitsgründen, beachten Sie aber dabei, dass auch die Verbindung vom Apache-Server zum Tomcat via mod_jk verschlüsselt wird, z.B. über einen ssh-Tunnel.

  In der SuperX-Distribution sind die Tomcat-spezifischen Dateien für die Anbindung an den Apache 1.3.x via mod_jk bereits enthalten, es müssen lediglich ein paar Anpassungen gemacht werden:

  • Teil der SuperX-Distribution ist ein Konfigurationsbeispiel mit dem Namen $SUPERX_DIR/webserver/tomcat/conf/superx_mod_jk.conf.sam . dieses können Sie umbenennen nach superx_mod_jk.conf, und in der Datei den Pfad für das mod_jk-Modul ( mod_jk.so ) anpassen. Ausserdem kann der Logging-Level festgelegt werden (Werte: "debug", "warning", "error", im Echtbetrieb empfehlen wir "error"). 

  • Bei manchen mod_jk- oder Apache Versionen muss man noch die Zeile
    JkMountCopy All
    hinzufügen, siehe Hyperlink . 

  • In der Datei $SUPERX_DIR/webserver/tomcat/conf/workers.properties muss der Parameter
    workers.tomcat_home
    auf den richtigen Pfad gesetzt werden, wenn Tomcat auf dem gleichen Rechner läuft (wenn Sie SuperX in /home/superx installiert haben, brauchen Sie hier keine Änderungen vornehmen).
    Ausserdem muss der richtige Pfad für workers.java_home gesetzt werden, sowie der Pfad-Demiliter ps für das Betriebssystem ("/" für Unix, "\" für Win, ":" für Mac)
    Wenn Sie den Apache auf einem separaten Rechner betrieben, dann müssen Sie beim Parameter worker.ajp13.host nicht "localhost", sondern den Rechnernamen / IP-Nr. des Tomcat-Servers eintragen. 

  • Danach fügen Sie am Ende der Apache-Konfigurationsdatei ( unter SuSE Linux z.B. /etc/httpd/httpd.conf ) die Zeile
    Include /home/superx/webserver/tomcat/conf/superx_mod_jk.conf)
    ein (oder stellen das Script nach /etc/apache2/conf.d dann wird es automatisch gelesen) Außerdem müssen Sie ggf. die Umgebungsvariable DirectoryIndex auf index.htm setzen (nicht nur index.html), da die Startseite in den Verzeichnissen immer index.htm heißt.
     

  • Es wird empfohlen, einen 10 Min-Timeout zu setzen, dazu in der worker.properties
    worker.ajp13.connection_pool_timeout=600 und in tomcat/conf/server.xml bei 8009 Konnektor connectionTimeout="60000" ( http://tomcat.apache.org/connectors-doc/generic_howto/timeouts.html )
    Wenn eine Firewall zwischen den Rechnern liegt, könnte diese möglicherweise Verbindungen kappen, dann ist es gut, wenn man worker.ajp13.session_keepalive=1 setzt. ( http://tomcat.apache.org/connectors-doc/generic_howto/timeouts.html Firewall Connection Dropping) 

  •  
    Danach starten Sie Apache neu ( apachectl restart ). 

  • In der Datei $SUPERX_DIR/webserver/tomcat/conf/server.xml auf dem Tomcat-Rechner kann dann der http-Connector 8080 auskommentiert werden, und der Apache-Connector ajp13 kann benutzt werden; standardmäßig geht dieser über den Port 8009. Dieser Connector ist bei Auslieferung von SuperX aktiviert. 

  • Dann starten Sie zuerst Tomcat neu, und dann den Apache. Danach müsste auf dem Webserver das Verzeichnis superx gemounted sein, und alle Anfragen mit der Endung *.jsp bzw. in das servlet-Verzeichnis gehen zu Tomcat.  

  • Danach müssen Sie ggf. in der Datei
    $SUPERX_DIR/webserver/tomcat/webapps/superx/applet/superx.properties
    den Port für Tomcat (Vorbelegung: ":8080") rausnehmen (mit "#" auskommentieren). 

 

Sobald Tomcat so an den Apache angebunden ist, kann auch die Verschlüsselung über den Apache laufen. Wenn das Apache-Modul mod_ssl installiert und konfiguriert ist, dann werden auch automatisch anhand des Präfixes http://.. und https://... Anfragen an Tomcat weitergeleitet.