Proxy inverse avec websocket mod proxy wstunnel
j'ai un problème avec les sockets web et mon mandataire inverse Apache, j'ai mis à jour dans la dernière version 2.4.5 et chargé le module mod_proxy_wstunnel
.
httpd.conf:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName www.toto.fr
ServerAlias toto.fr
ProxyPass /my_app http://1X.X.X.1:8080/my_app
ProxyPassReverse /web_pmr http://1X.X.X.1:8080/my_app
ProxyPassReverseCookiePath /my_app /
ProxyPassReverseCookieDomain localhost my_app
ProxyRequests off
ProxyTimeout 15
#WEBSOCKETS
ProxyPass /my_app/BasicWebsocketServlet ws://1X.X.X.1:8080/my_app/BasicWebsocketServlet retry=0
ProxyPassReverse /my_app/BasicWebsocketServlet ws://1X.X.X.1:8080/web_pmr/BasicWebsocketServlet retry=0
ErrorLog "logs/my_app_error.log"
LogLevel debug
CustomLog "logs/my_app_access.log" combined
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
quand je teste dans mon URL locale, les websockets fonctionnent mais avec le proxy inverse Apache, il n'y a pas de trace dans les journaux de Tomcat.
1 réponses
Cette ligne:
ProxyPass /my_app/BasicWebsocketServlet ws://1X.X.X.1:8080/my_app/BasicWebsocketServlet retry=0
doit venir avant que celui-ci:
ProxyPass /my_app http://1X.X.X.1:8080/my_app
Explication (à partir de https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass):
les règles configurées ProxyPass et ProxyPassMatch sont vérifiées dans l'ordre de configuration. La première règle qui correspond gagne. Donc habituellement, vous devriez trier les règles ProxyPass conflictuelles en commençant par les plus longues URLs premier. Dans le cas contraire, les règles ultérieures pour les URL plus longues seront cachées par n'importe quelle règle antérieure qui utilise une sous-chaîne principale de L'URL. Notez qu'il y a une certaine relation avec le partage des travailleurs. En revanche, une seule directive ProxyPass peut être placée dans un bloc D'emplacement, et l'emplacement le plus spécifique aura priorité.
pour les mêmes raisons, les exclusions doivent passer avant les directives générales ProxyPass.