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
Esto podría ser lo que estás buscando. Eche un vistazo a: https://npmjs.org/package/npr