簡體   English   中英

如何配置Apache代理socket.io服務器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM