proxy_module mod_proxy_wstunnel mod_proxy keepalive httpd conf apache websocket mojolicious proxypass

mod_proxy_wstunnel - Apache proxyPassReverse y Websockets



apache websocket virtualhost (3)

Apache httpd 2.4.6 incluye solicitudes de proxy websocket.

He estado trabajando en un proyecto de Perl Mojolicious que utiliza websockets. Estoy deseando iniciarlo en un servidor compartido que ejecuta apache y usar proxyPass y proxyPassReverse para hacer que la URL sea más bonita para mi código Mojolicious que se ejecuta con Hypnotoad.

Lo tengo configurado de la siguiente manera.

URL de apache:

mydomain.com

URL de Hypnotoad:

mydomain.com:8080

Con la siguiente entrada de apache puedo revertir el proxy del servidor Hypnotoad para

project.mydomain.com

entrada apache.conf

<VirtualHost *:80> ServerName project.mydomain.com DocumentRoot /var/www/project <Directory /var/www/project/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ProxyRequests Off ProxyPreserveHost On ProxyPass / http://mydomain.com:8080/ keepalive=On ProxyPassReverse / http://mydomain.com:8080/ RequestHeader set X-Forwarded-HTTPS "0" </VirtualHost>

Sin embargo, mis solicitudes de websocket dan un error 404 cuando uso:

ws://project.mydomain.com/get-data

y un error 302 cuando uso:

ws://mydomain.com:8080/get-data

Supongo que esto no sería un problema si el websocket no comprobó la autenticación, pero utilizan rutas Mojolicious para verificar que se puede publicar a través del websocket.

Por lo que puedo ver, Apache no admite el uso de proxy websockets inversos. En apache / httpd conf archivos.

¿Alguien ha encontrado una solución utilizable para esto utilizando Apache que sea estable para un entorno de producción?


En marzo, Jim Jagielski comprometió un parche en el troncal de Apache, lo que permite que los websockets se procesen correctamente. El parche agrega un nuevo submódulo llamado proxy_wstunnel que permite que mod_proxy funcione con los protocolos "ws" y "wss" .

El módulo aún no se encuentra en ninguna versión oficial de Apache (a partir del 8 de junio de 2013), por lo que deberá compilarlo usted mismo. El blog de Voyageur describe el proceso para Apache 2.2, pero debería ser más fácil para Apache 2.4