mod_proxy_wstunnel을 사용하여 socket.io의 websocket 연결을 node.js 웹 소켓 서버에 프록시 처리하도록 Apache 2.4를 구성하려고합니다. 우리는 socket.io 0.9에서 잘 작동했지만 1.0 릴리스에서는 소켓 끝점을 쿼리 매개 변수로 변경했으며 이제 올바른 프록시 지침으로 아파치를 구성하는 데 문제가 있습니다.
에 대한 모든 요청 /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에 하드 코드되어 있으므로 전체 라이브러리를 포크하지 않아서 변경할 수 없습니다.