Я намагаюся налаштувати Apache 2.4 для підключення з'єднання websocket для socket.io до сервера websocket node.js, використовуючи mod_proxy_wstunnel. У нас це було чудово з socket.io 0.9, але з випуском 1.0 вони змінили кінцеву точку сокета на параметр запиту, і тепер у мене виникають проблеми з налаштуванням apache з правильними інструкціями проксі.
Усі запити до /socket.io/?EIO=N&transport=websocket
(де N - будь-яка цифра, як правило, 2) потрібно переадресувати ws://localhost:8082/socket.io/
, але всі інші запити потрібно переадресувати http://localhost:8082/socket.io/
.
Я спробував варіанти обох наведених нижче конфігурацій:
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/
З мого googling я зрозумів, що ProxyPass і Locations не можуть орієнтуватися на рядки запитів, тож чи є тут інший варіант? Шляхи кодуються в socket.io, тому не вистачаючи розсилки на всю бібліотеку, я не можу їх змінити.