Tomcat via Apache Proxy + Websockets

MadMG

Mitglied
Ich ein Problem mit Tomcat7 und Apache 2.4. Beides läuft auf Windows und dies ist leider Firmenpolitik. Es liegt nicht in meiner Macht das zu ändern, sondern ich darf es nur zum Laufen bringen und am Laufen halten. ;)

Verwendete Komponenten
- Tomcat 7.0.42
- Apache 2.4.6
- Win7 Ultimat 64 Bit (Testumgebung)
- Win Server 2008 R2 bzw. Win 2012 Server (Live)

Problembeschreibung
Wir haben eine WebApplication welche sich hinter einem Apache httpd Server in einem Tomcat 7 Servlet Container befindet. Diese Application besteht aus 2 WARs welche sich die Aufgabe der Authentifizierung teilen. Die Applikation benötigt zur Kommunikation mit dem Server eine WebSocket Verbindung. Beim Testen ist uns dann aufgefallen, dass anscheinend etwas an der Konfiguration des Webservers nicht stimmen kann, da sich die Application beim Aufbau der WebSocket Verbindung sehr unterschiedlich verhält (abhängig vom Aufrufenden Computer).

Ausgangssituation
Wir haben eine WebApp, welche in einem Tomcat 7 Servlet Container hinter einem Apache httpd Web Server läuft. Die WebApp verwendet WebSockets zur Serverkommunikation. Das ganze läuft ohne Probleme, wenn auf dem Computer, welcher die Apache httpd und Tomcat 7 Instanzen bereit stellt, auf die WebApp zugegriffen wird. Die WebSocket Verbindung(en) können ohne weiteres (re-)connected/closed/disconnected werden – es gehen keine Nachrichten verloren und auch der Reconnect nach einem Client Timeout funktioniert problemlos.

Verhalten
Sobald nun aber die WebApp von einem anderen Computer im Netz aufgerufen wird, wird das Ganze zu einem Glücksspiel und es kann passieren, dass die WebSocket Verbindung einmal wirklich aufgebaut wird, dann wiederum auf Long-Polling gesprungen wird (es wird immer derselbe Browser verwendet!) um dann irgendwann den Dienst ganz zu versagen… das alles passiert natürlich auch in zufälliger Reihenfolge, ist also nur schwer reproduzierbar. Da aber alles reibungslos funktioniert, wenn sich dieser Computer (mit noch immer denselben Browser) am Apache httpd vorbei direkt mit dem Tomcat 7 verbindet, kann sich das Ganze offensichtlich nur um ein Konfigurationsproblem unsererseits, oder einen Bug/Fehler in der „mod_proxy_wstunnel“ Erweiterung handeln. (Die Firewall am „Webserver“ ist derzeit deaktiviert).

Hier meine VirtualHost Config:
<VirtualHost _default_:80>
ServerName localhost

RewriteEngine on
RedirectMatch ^/$ /bloggofant/
RewriteRule ^/bloggofant$ /bloggofant/ [R]
RewriteRule ^/bloggofant/authenticated$ /bloggofant/authenticated/ [R]

ProxyRequests Off
ProxyPreserveHost On
ProxyVia On
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>

#ProxyHTMLLogVerbose On
LogLevel debug

ProxyHTMLEnable On
ProxyHTMLBufSize 102400
ProxyHTMLExtended On
ProxyHTMLStripComments Off
ProxyHTMLDocType "<!DOCTYPE html>" XML
ProxyHTMLMeta On

DocumentRoot "${SRVROOT}/htdocs/"

ProxyPass /bloggofant/authenticated/websock
ws://localhost:8080/BloggoFantApp/websock
<Location /bloggofant/authenticated/websock>
ProxyPassReverse ws://localhost:8080/BloggoFantApp/websock
ProxyHTMLURLMap /BloggoFantApp/websock /bloggofant/authenticated/websock
</Location>

ProxyPass /bloggofant/authenticated/ ajp://localhost:8009/BloggoFantApp/
ProxyHTMLURLMap ajp://localhost:8009/BloggoFantApp
/bloggofant/authenticated/
<Location /bloggofant/authenticated/>
ProxyPassReverse ajp://localhost:8009/BloggoFantApp/
SetOutputFilter proxy-html
ProxyHTMLURLMap /BloggoFantApp/ /bloggofant/authenticated/
ProxyPassReverseCookiePath /BloggoFantApp/ /bloggofant/authenticated/
#RequestHeader unset Accept-Encoding
</Location>

ProxyPass /bloggofant/ ajp://localhost:8009/BloggoFantAuthentication/
ProxyHTMLURLMap ajp://localhost:8009/BloggoFantAuthentication /bloggofant/
<Location /bloggofant/>
ProxyPassReverse ajp://localhost:8009/BloggoFantAuthentication/
SetOutputFilter proxy-html
ProxyHTMLURLMap /BloggoFantAuthentication/ /bloggofant/
ProxyPassReverseCookiePath /BloggoFantAuthentication/ /bloggofant/
#RequestHeader unset Accept-Encoding
</Location>

</VirtualHost>

Anregungen, Tipps oder Hinweise in irgendeiner Form sind willkommne, weil ich hab echt keine Ahnung mehr was hier schief läuft... o_O
 

sence

Bekanntes Mitglied
besteht dein Problem noch ?

wenn ja, verwendet mal mod_jk 1.3.

@Fun
Wenn Dir ein Windows Rechner gegeben wird, mach linux draus -> VirtualBox :)
 

MadMG

Mitglied
Das Problem tritt zwar nicht mehr auf, aber ich glaube es besteht weiterhin. Nach mehreren Tests auf verschiedenen Windows Server Versionen scheint es so, dass es nur dann zu dem Problem kommt wenn der Apache auf Port 80 läuft. Wenn ich zb. 8000 konfiguriere lief das System stabil. Ebenso via HTTPS auf port 443. Da ich bzw. wir das gesamte System aber sowieso mit HTTPS laufen lassen müssen leite ich über die Port 80 VirtualHost Konfiguration einfach auf HTTPS weiter. Seitdem läufts in Sachen Websockets stabil.

Allerdings tritt seit kurzem ein anderes Problem auf. Diesmal auf Windows Server 2003 32Bit. Hier scheint es so als würde der Apache einfach hängen bleiben. Ich sehe weder Aktivität in den Logs noch ist die Seite erreichbar. Erst wenn der Dienst neu gestartet wird ist er wieder erreichbar.

Nach längerer Recherche bin ich auf mpm_winnt - Apache HTTP Server gestossen und auf folgende Settings:
EnableMMAP off
EnableSendfile off

AcceptFilter http none
AcceptFilter https none

Dies sollte das Problem angeblich lösen, allerdings kann ich das im Moment weder bestätigen noch widerlegen.
 

MadMG

Mitglied
Das Problem tritt zwar nicht mehr auf, aber ich glaube es besteht weiterhin. Nach mehreren Tests auf verschiedenen Windows Server Versionen scheint es so, dass es nur dann zu dem Problem kommt wenn der Apache auf Port 80 läuft. Wenn ich zb. 8000 konfiguriere lief das System stabil. Ebenso via HTTPS auf port 443. Da ich bzw. wir das gesamte System aber sowieso mit HTTPS laufen lassen müssen leite ich über die Port 80 VirtualHost Konfiguration einfach auf HTTPS weiter. Seitdem läufts in Sachen Websockets stabil.

Allerdings tritt seit kurzem ein anderes Problem auf. Diesmal auf Windows Server 2003 32Bit. Hier scheint es so als würde der Apache einfach hängen bleiben. Ich sehe weder Aktivität in den Logs noch ist die Seite erreichbar. Erst wenn der Dienst neu gestartet wird ist er wieder erreichbar.

Nach längerer Recherche bin ich auf mpm_winnt - Apache HTTP Server gestossen und auf folgende Settings:


Dies sollte das Problem angeblich lösen, allerdings kann ich das im Moment weder bestätigen noch widerlegen.

Den Windows Server mit VirtualBox umgehen kann ich nicht. Das System kommt so in der Form bei Kunden zum Einsatz. Dort muss ich quasi nehmen was ich bekomm und im aktuellen Fall ist es ein Win 2003 Server 32Bit mit auf Windows Servern virtualisiert (vermutlich Hyper-V). Der Kunde bzw. deren IT ist mächtiger als meine KOllegen und ich. Da zieh ich immer den kürzeren ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
KonradN Apache Tomcat Schwachstelle (Versionen 8, 9, 10 und 11) Server einrichten und konfigurieren 0
H Apache Tomcat Installation/Konfiguration arbeitet nicht einwandfrei Server einrichten und konfigurieren 5
D Daten auf Apache Tomcat Server ablegen, möglich ? Server einrichten und konfigurieren 1
R Verbindung zwischen Apache und Tomcat über mod_jk funktioniert nur sporadisch Server einrichten und konfigurieren 0
G Tomcat 7 mit Apache 2 verbinden über mod_jk Server einrichten und konfigurieren 3
Mike90 Tomcat 7 INFO: The APR based Apache Tomcat Native ... Server einrichten und konfigurieren 3
T GlassFish anstatt Apache Tomcat Server einrichten und konfigurieren 29
T Apache Tomcat - mehere Instanzen - Session Problem Server einrichten und konfigurieren 7
N Weiterleitung Apache mit Tomcat über mod_jk funktioniert nicht... Server einrichten und konfigurieren 7
F Verständnisfrage zu Tomcat, Apache & mod_jk Server einrichten und konfigurieren 8
S Apache 2.2 und Tomcat 6 - Resource not found Server einrichten und konfigurieren 5
K apache, tomcat mysql einrichten Server einrichten und konfigurieren 6
M Serlvet wird nicht gefunden (404) Apache Tomcat 6.0 Server einrichten und konfigurieren 7
A Tomcat:Fehler HTTP Status 500 -> org.apache.jasper.Jasper Server einrichten und konfigurieren 1
P Tomcat und Apache Server einrichten und konfigurieren 3
B Apache und Tomcat im Team Server einrichten und konfigurieren 3
S Tomcat 9 mit Datasource Realm auf eine H2 Datenbank Server einrichten und konfigurieren 3
D Tomcat context.xml wo ablegen im Projekt? Server einrichten und konfigurieren 3
S Tomcat Server nicht erreichbar Server einrichten und konfigurieren 21
pkm Lassen sich mit Tomcat bestimmte URL-Patterns verbieten? Server einrichten und konfigurieren 0
B Tomcat Manager: umbebannt, zurückbenannt, jetzt nur noch 403-Fehler Server einrichten und konfigurieren 8
E Tomcat Eclipse Problem Server einrichten und konfigurieren 0
T Tomcat 8 unter STS Server einrichten und konfigurieren 0
K Tomcat - Java-Version? Server einrichten und konfigurieren 5
A Tomcat und JNI Library Server einrichten und konfigurieren 0
K Tomcat: Host Manager -> 404 Server einrichten und konfigurieren 1
K Tomcat: maximale Anmeldeversuche einschränken (funktioniert nicht) Server einrichten und konfigurieren 1
F Tomcat startet Anwendung nicht im Windows-Service-Modus Server einrichten und konfigurieren 1
C [Nagios] Tomcat-Logfile überwachen Server einrichten und konfigurieren 1
T Tomcat 7 JSTL Server einrichten und konfigurieren 0
S Tomcat 6.0.20 sessionCookiePath in context.xml wird ignoriert Server einrichten und konfigurieren 1
I Tomcat Host mit JDBC-Resource Server einrichten und konfigurieren 0
K Tomcat als Service, falsche Farbe Server einrichten und konfigurieren 0
M Tomcat Proxy - erkennt Tomcat httpd.conf Server einrichten und konfigurieren 0
HarleyDavidson Tomcat Instanznamen ändern Server einrichten und konfigurieren 1
R Tomcat und Zertifikat-Import Server einrichten und konfigurieren 0
M Tomcat - Deploy war - Verbindungsfehler Server einrichten und konfigurieren 4
FINF_AW_Alex WebLogic, Glassfish, Tomcat.... Server einrichten und konfigurieren 3
C DataSource mit Tomcat einrichten Server einrichten und konfigurieren 1
T tomcat blockiert Server einrichten und konfigurieren 0
A Tomcat bekommt keine Schreibrechte für webapps Server einrichten und konfigurieren 6
Q Tomcat-Cluster und Arbeitsspeicher Server einrichten und konfigurieren 4
P Tomcat unter xampp nachinstallieren Server einrichten und konfigurieren 4
R Cacht Tomcat/axis2 Klassen? Server einrichten und konfigurieren 3
MQue Tomcat PermSpace Server einrichten und konfigurieren 9
G Tomcat 6.0 von https auf http umstellen Server einrichten und konfigurieren 2
W Tomcat 7 und Eclipse Birt Viewer 3.7.2 - Datenbankprobleme Server einrichten und konfigurieren 2
T Permgen space Tomcat Server einrichten und konfigurieren 7
P Tomcat Context Server einrichten und konfigurieren 3
H Glassfish auf Tomcat ? Server einrichten und konfigurieren 2
E Tomcat/Jasper checkt nicht mehr auf Änderungen Server einrichten und konfigurieren 4
L Tomcat webapps Pfad nach Eclipse workspace verschieben Server einrichten und konfigurieren 6
F Tomcat Session timeout unendlich Server einrichten und konfigurieren 7
M JBoss und Tomcat Server einrichten und konfigurieren 8
schlingel Tomcat für den Produktiveinsatz Server einrichten und konfigurieren 14
E JSF auf Tomcat ? Server einrichten und konfigurieren 5
X3TitanCore Tomcat Datensynchronisation Server einrichten und konfigurieren 6
G Tomcat außerhalb des Servers nicht erreichbar Server einrichten und konfigurieren 6
P Ständige Fehlermeldungen bei Tomcat 5.5 Server einrichten und konfigurieren 11
A Tomcat in Eclipse Server einrichten und konfigurieren 5
K Apache2/Tomcat URL umschreiben Server einrichten und konfigurieren 6
M Hardwareempfehlung für TOMCAT Server Server einrichten und konfigurieren 8
ruutaiokwu jasper compiler problem in tomcat!!! Server einrichten und konfigurieren 3
J Tomcat 7 Probleme bei vorhandener context.xml Server einrichten und konfigurieren 1
B Webproject + Tomcat + SSL Server einrichten und konfigurieren 15
P Tomcat sehr langsam Server einrichten und konfigurieren 5
D Tomcat log lesen Server einrichten und konfigurieren 2
K Tomcat von remote nicht erreichbar Server einrichten und konfigurieren 14
W Tomcat 5.5 mit Apache2 + mod_jk (Debian Etch) Server einrichten und konfigurieren 2
S bestimmte user agenten sperren mit tomcat Server einrichten und konfigurieren 5
F Tomcat Klassenlader Server einrichten und konfigurieren 3
G Tomcat https Server einrichten und konfigurieren 3
V Keystore Type für Tomcat ändern Server einrichten und konfigurieren 2
E Tomcat und Eclipse Server einrichten und konfigurieren 4
N JSF-Facelets auf Tomcat - ich krieg's nicht hin Server einrichten und konfigurieren 10
G Tomcat socket Connection Server einrichten und konfigurieren 3
I JSF Entwicklung mit Eclipse und Tomcat 6 unter Gentoo Server einrichten und konfigurieren 8
D Tomcat V-Host Context Problem Server einrichten und konfigurieren 3
A Mehrere Tomcat Instanzen auf Basis einer Tomcat Installation Server einrichten und konfigurieren 1
M Tomcat oder Applicationserver Server einrichten und konfigurieren 3
M Tomcat oder sonstiger Webserver für mehrere Projekte Server einrichten und konfigurieren 5
D Tomcat für SSLv2 konfigurieren Server einrichten und konfigurieren 6
H Tomcat Startseite einrichten Server einrichten und konfigurieren 3
B Tomcat Welcome-Page aus Eclipse nicht erreichbar Server einrichten und konfigurieren 4
0din Webspace mit Tomcat etc. Server einrichten und konfigurieren 4
A Standard-Webapp in Tomcat 6 - wie konfigurierbar? Server einrichten und konfigurieren 3
0din Tomcat unter Eclipse einbinden Server einrichten und konfigurieren 7
X3TitanCore Tomcat installieren Server einrichten und konfigurieren 2
R Fehler beim TOMCAT, davor ging es noch! Server einrichten und konfigurieren 1
E tomcat installation Server einrichten und konfigurieren 4
J Tomcat: shutdown.sh script funktioniert plötzlich nicht mehr Server einrichten und konfigurieren 3
D Tomcat auf anderer Maschine als Eclipse Server einrichten und konfigurieren 8
P maven-tomcat-plugin redeploy funktioniert nicht? Server einrichten und konfigurieren 6
P Tomcat 6.x - context path wird nicht richtig gesetzt durch MAven2 Plugin Server einrichten und konfigurieren 16
GFEMajor Von Tomcat auf JBoss EJB mit Sicherheit Server einrichten und konfigurieren 2
F tomcat deutsch starten Server einrichten und konfigurieren 8
A Tomcat und SLL Client Authentication Server einrichten und konfigurieren 2
P Tomcat Probleme beim einrichten Server einrichten und konfigurieren 2
B TOMCAT AXIS : Probleme bei parallele Requests Server einrichten und konfigurieren 6
R Tomcat: The requested resource () is not available Server einrichten und konfigurieren 8

Ähnliche Java Themen

Neue Themen


Oben