Problem mit der ErrorDocument Direktive (Apache + mod_jk)

Alles, was den Apache betrifft, kann hier besprochen werden.

Problem mit der ErrorDocument Direktive (Apache + mod_jk)

Postby Gandalf_the_Grey » 21. July 2009 06:59

Hallo zusammen,

ich habe folgendes Ausgangssituation:

Hier in der Firma haben wir ein Wiki auf Java Basis im Einsatz (Tomcat wird mit ausgeliefert).
Dieses Wiki habe ich kürzlich auf einem Debian Lenny Server neu aufgesetzt.
Da zu Wartungsarbeiten gelegentlich das Wiki heruntergefahren wird (streng genommen der Tomcat),
haben wir uns entschlossen einen Apache vor den Tomcat zu schalten.

1) Soll der Apache die Zwangsumleitung von http -> https übernehmen.
2) Soll der Apache (mit Tomcat hatten wir da früher mal Probleme) das Thawte SSL Zertifikat bereitstellen.
3) Soll bei heruntergefahrenem Tomcat der Apache automatisch eine selbst definierte HTML Seite für den Fehler 503 anzeigen.

Was geht, was geht nicht?

Wenn ich im die Direktive ErrorDocument 503 [...] setze, dann funktioniert
a) Das weiterleiten auf eine externe URL
b) Die Ausgabe eines Textes wie z.B. "Die Webseite ist derzeit wegen Wartungsarbeiten offline"
c) Die Ausgabe des Apache Standardfehlercodes

Die Weiterleitung aller Anfragen vom Apache zum Tomcat funktioniert ebenfalls hervorragend.
Ebenso wie SSL Handling (in dieser Konfig abgeschaltet) und Zwangsumleitung von *:80 => *:443.

Was nicht funktioniert ist die Weiterleitung in ein lokales Verzeichnis in dem sich eine HTML Seite befindet.
Wenn ich dies probiere erhalte ich die Standard Fehlermeldung 503 sowie einen Zusatzhinweis:

Additionally, a 503 Service Temporarily Unavailable error was encountered while trying to use an ErrorDocument to handle the request.


Frage: Wie hinterlege ich auf dem lokalen Server eine Wartungswebseite, welche über ErrorDocument 503 erfolgreich aufgerufen wird?

Zum Verbinden von des Apache (2.2.X) und des Tomcats (6.0.X) setzen wir aus Performancegründen den aktuellsten mod_jk ein.

Die Konfig sieht wie folgt aus:

/etc/apache2/sites-enabled/tomcat
Code: Select all
<VirtualHost *:80>
ServerName archivwiki.hlp.de
ServerAdmin wiki@hlp.de
JkMount /* worker1
JkMount /*.jsp worker1
DirectoryIndex index.jsp index.html
</VirtualHost>


/etc/apache2/workers.properties
Code: Select all
worker.list=worker1
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.type=ajp13


/etc/apache2/apache2.conf
Code: Select all
JkWorkersFile /etc/apache2/workers.properties
JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel info
JkOptions +ForwardURICompatUnparsed


/usr/local/confluence-2.10.3-std/conf/server.xml
Code: Select all
<Server port="8000" shutdown="SHUTDOWN" debug="0">
    <Service name="Tomcat-Standalone">
        <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8080" minProcessors="5"
                   maxProcessors="75"
                   enableLookups="false" redirectPort="8443" acceptCount="10" debug="0" connectionTimeout="20000"
                   useURIValidationHack="false" URIEncoding="UTF-8"/>

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" minSpareThreads="5" maxThreads="256" protocol="AJP/1.3" />

        <Engine name="Standalone" defaultHost="localhost" debug="0">

            <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="false">

                <Context path="" docBase="../confluence" debug="0" reloadable="false">
                    <!-- Logger is deprecated in Tomcat 5.5. Logging configuration for Confluence is specified in confluence/WEB-INF/classes/log4j.properties -->
                    <Manager pathname="" />
                </Context>
            </Host>
        </Engine>
    </Service>
</Server>


EDIT:
Habe mittlerweile herausgefunden, dass es wenn ich mod Proxy verwenden würde mit folgender Ergänzung im virtual Host funktionieren müsste:

Code: Select all
ErrorDocument 503 /error-documents/503.html
Alias /error-documents /path/to/error-docs
ProxyPass /error-documents !


Weiß jemand wie die unterste Zeile bei mod_jk aussehen müsste?

EDIT2:
Es hat sich gerade erledigt. :o :o :o

Nach 1 Tag suchen bin ich eben vom Schlauch runter gestiegen und habe den Befehl jkUnMount gefunden und benutzt. ;)

Code: Select all
<VirtualHost *:80>
ServerName archivwiki.hlp.de
ServerAdmin wiki@hlp.de
ErrorDocument 503 /wartung/wartung.html
Alias /wartung /usr/local/webseite/wartung
JkUnMount /wartung/* worker1
JkMount /* worker1
JkMount /*.jsp worker1
DirectoryIndex index.jsp index.html
</VirtualHost>


Damit funktioniert es. ;)
Gandalf_the_Grey
 
Posts: 10
Joined: 24. September 2003 07:46

Return to Apache

Who is online

Users browsing this forum: No registered users and 4 guests