Mod_proxy_wstunnel kullanarak bir node.js websocket sunucusuna socket.io için websocket bağlantısı proxy için Apache 2.4 yapılandırmaya çalışıyorum. Bu çalışmayı socket.io 0.9 ile yaptık, ancak 1.0 sürümünde soket uç noktasını bir sorgu parametresine değiştirdiler ve şimdi apache'yi doğru proxy talimatları ile yapılandırmada sorun yaşıyorum.
Tüm isteklerin /socket.io/?EIO=N&transport=websocket
(burada N herhangi bir basamaktır, genellikle 2'dir) ws://localhost:8082/socket.io/
, ancak diğer tüm isteklerin yönlendirilmesi gerekir http://localhost:8082/socket.io/
.
Aşağıdaki yapılandırmaların her ikisinin varyasyonlarını denedim:
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/
Google'ımdan ProxyPass ve Locations'ın sorgu dizelerini hedefleyemediğini öğrendim, bu yüzden burada başka bir seçenek var mı? Yollar socket.io içine sabit kodlanmıştır, bu yüzden tüm kütüphaneyi çatallamaktan kısa onları değiştiremem.