Prérequis : Apache > version 2.4.10 sur plateforme unix, linux et windows implémente un mode reverse proxy pour les websockets.

 

configuration dans httpd.conf d'un serveur apache  www.domain.com (en écoute sur le port 80) en frontal d'un serveur tomcat remotehost (en écoute sur le port 88) pour les requêtes en reverse proxy

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

...
 
ProxyRequests Off    

ProxyPass /myapp/WagonWS ws://remotehost:88/myapp/WagonWS
ProxyPassReverse /myapp/WagonWS ws://remotehost:88/myapp/WagonWS
ProxyPass /myapp/ http://remotehost:88/myapp/
ProxyPassReverse /myapp/ http://remotehost:88/myapp/

Remarque : dans la déclaration de la règle en reverse proxy sur la websocket WagonWS, l'url ne doit être se terminer par  /WagonWS,  en aucun cas il ne faut rajouter de / à la fin de l'URL.

configuration du listener tomcat en mode reverse proxy

  <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" port="88" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true" scheme="http" proxyName="www.domain.com" proxyPort="80"/>