Sto cercando di configurare Apache 2.4 per il proxy della connessione websocket per socket.io a un server websocket node.js, usando mod_proxy_wstunnel. Abbiamo funzionato bene con socket.io 0.9, ma con la versione 1.0 hanno cambiato l'endpoint del socket in un parametro di query e ora ho problemi a configurare apache con le istruzioni proxy corrette.
Tutte le richieste a /socket.io/?EIO=N&transport=websocket
(dove N è qualsiasi cifra, in genere 2) devono essere inoltrate a ws://localhost:8082/socket.io/
, ma tutte le altre richieste devono essere inoltrate a http://localhost:8082/socket.io/
.
Ho provato le varianti di entrambe le seguenti configurazioni:
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/
Ho capito dal mio google che ProxyPass e Locations non possono indirizzare le stringhe di query, quindi c'è qualche altra opzione qui? I percorsi sono hardcoded in socket.io, così a corto di fork di tutta la libreria che non posso cambiarli.