Usiłuję skonfigurować Apache 2.4 do proxy proxy połączenia websocket dla socket.io z serwerem websocket node.js, używając mod_proxy_wstunnel. Działa to dobrze z socket.io 0.9, ale w wersji 1.0 zmieniono punkt końcowy gniazda na parametr zapytania, a teraz mam problem ze skonfigurowaniem apache z prawidłowymi instrukcjami proxy.
Wszystkie żądania do /socket.io/?EIO=N&transport=websocket
(gdzie N jest dowolną cyfrą, zwykle 2) muszą być przekazywane do ws://localhost:8082/socket.io/
, ale wszystkie inne żądania muszą być przekazywane do http://localhost:8082/socket.io/
.
Próbowałem odmian obu następujących konfiguracji:
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/
Z Google'a dowiedziałem się, że ProxyPass i Lokalizacje nie mogą kierować na ciągi zapytań, więc czy jest tu jakaś inna opcja? Ścieżki są zakodowane na stałe w socket.io, więc tak szybko, jak rozwidlenie całej biblioteki, nie mogę ich zmienić.