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.
fuente
forcing proxy-throughput with http://[REDACTED].dev/ws://localhost:8082/socket.io/
(domain.dev<VirtualHost>
bloque en el orden exacto descrito, incluso si está utilizando la raíz del documento (por ejemplo/var/www/html
). Pasé casi 2 horas tratando de descubrir por qué estos cambios no funcionaban correctamente, solo para descubrir que losRewriteRule
's no funcionaban a nivel raízhttpd.conf
(aunque síProxyPass
funcionaban). LasProxyPass
directivas no funcionan en<Directory>
bloques o.htaccess
archivos (aunque sí loRewriteRule
hacen), por lo que es el lugar lógico para agrupar estos cambios<VirtualHost>
.