mod.proxy_wstunnelを使用して、socket.ioのwebsocket接続をnode.js websocketサーバーにプロキシするようにApache 2.4を設定しようとしています。これは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/
私はグーグルから、ProxyPassとLocationsがクエリ文字列をターゲットにできないことを収集しましたが、ここに他のオプションはありますか?パスはsocket.ioにハードコーディングされているため、ライブラリ全体をフォークするまでは変更できません。