Estoy tratando de configurar Apache 2.4 para enviar la conexión websocket para socket.io a un servidor websocket node.js, usando mod_proxy_wstunnel. Esto funcionaba bien con socket.io 0.9, pero con la versión 1.0 cambiaron el punto final del socket a un parámetro de consulta, y ahora tengo problemas para configurar Apache con las instrucciones de proxy correctas.
Todas las solicitudes a /socket.io/?EIO=N&transport=websocket
(donde N es cualquier dígito, generalmente 2) deben reenviarse ws://localhost:8082/socket.io/
, pero todas las demás solicitudes deben reenviarse a http://localhost:8082/socket.io/
.
He intentado variaciones de las dos configuraciones siguientes:
ProxyPass /socket.io/?EIO=2&transport=websocket http://localhost:8082/socket.io/?EIO=2&transport=websocket
ProxyPassReverse /socket.io/?EIO=2&transport=websocket http://localhost:8082/socket.io/?EIO=2&transport=websocket
ProxyPass /socket.io/ http://localhost:8082/socket.io/
ProxyPassReverse /socket.io/ http://localhost:8082/socket.io/
.
RewriteRule /socket.io/?EIO=([0-9]+)&transport=websocket ws://localhost:8082/socket.io/ [QSA,P]
ProxyPass /socket.io/ http://localhost:8082/socket.io/
ProxyPassReverse /socket.io/ http://localhost:8082/socket.io/
De mi búsqueda en Google he deducido que ProxyPass y Locations no pueden orientar cadenas de consulta, entonces, ¿hay alguna otra opción aquí? Las rutas están codificadas en socket.io, por lo que no puedo bifurcar toda la biblioteca, no puedo cambiarlas.