[英]How to configure Apache to proxy socket.io server
我在http://example.com:5000/上運行了一個webapp
該網站嘗試建立與該服務器的socket.io連接,以交換一些時間關鍵數據(多人游戲)。
到目前為止一切正常......
現在我正在努力讓整個生產准備就緒,所以我想在一個更好的URL上提供它: https : //myapp.example.com/
為此,我按如下方式配置我的Apache服務器:
ProxyPass / http://0.0.0.0:5000/
ProxyPassReverse / http://0.0.0.0:5000/
乍一看,一切似乎都有效 - 但socket.io無法再從輪詢切換到websocket。
Javascript控制台顯示此錯誤:
socket.io.js:8 WebSocket connection to 'wss://myadpp.example.com/socket.io/?EIO=3&transport=websocket&sid=0bef58d5622f4d20b4c1d7f29c97a21d' failed: Error during WebSocket handshake: Unexpected response code: 200
這似乎是一個非常常見的設置 - 隱藏基於socket.io的webapp在apache代理后面 - 但我找不到任何在線工作的解決方案。
似乎apache不能代理ws://連接,但我不知道該怎么做..
在這里找到解決方案: WebSockets和Apache代理:如何配置mod_proxy_wstunnel?
嘗試加載mod_proxy_wstunnel模塊: https : //httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html
編輯:
對於你的第二個問題嘗試這個:
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://0.0.0.0:5000/$1 [P,L]
RewriteCond %{QUERY_STRING} transport=polling [NC]
RewriteRule /(.*) http://0.0.0.0:5000/$1 [P,L]
ProxyPass / http://0.0.0.0:5000/
ProxyPassReverse / http://0.0.0.0:5000/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.