[英]Apache + Socket.io result in error establishing websocket connection on Mac
[英]Proxy WebSocket connection using Apache & Socket.io
我在通過Apache(2.4.6)代理WebSocket連接(Socket.io)時遇到問題。 我正在嘗試使用Socket.io問題https://github.com/Automattic/socket.io/issues/1696上描述的設置,但是我在開發人員工具中始終遇到錯誤,即在WebSocket握手期間連接失敗:
WebSocket connection to 'ws://example.domain.com/socket.io/?EIO=3&transport=websocket&sid=KPd7VBy4Yi7mj-wAAABN' failed: Error during WebSocket handshake: 'Connection' header value must contain 'Upgrade'
發生這種情況是因為Connection
標頭已設置為Close
而不是Upgrade
。
我確認已加載proxy_wstunnel_module
模塊,當我查看跟蹤日志時,我可以看到它對某些請求做出了響應,但是仍然出現上述錯誤。 我絕對不是Apache專家,所以我認為我的httpd.conf
文件中有錯誤(我嘗試使用Apache文檔確認所有行。
<VirtualHost *:80>
ServerName example.domain.com
ServerAlias example.domain.com
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header set Access-Control-Allow-Headers "content-type,x-requested-with"
RewriteEngine on
RewriteRule ^/$ /otherApp/home [PT]
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=polling [NC]
RewriteRule /(.*) http://localhost:3000/$1 [P,L]
<Directory />
Options All
Order Deny,Allow
Allow from all
</Directory>
ProxyRequests off
<Proxy *>
Order Deny,Allow
Allow from all
</Proxy>
<Location />
Order Deny,Allow
Allow from all
</Location>
ProxyPass /socket.io ws://localhost:3000/socket.io
ProxyPassReverse /socket.io ws://localhost:3000/socket.io
ProxyPass /AnotherApp ajp://localhost:8009/location
ProxyPass /AnotherApp2 ajp://somewhere.else:8009/location2
DocumentRoot /opt/appThings
<Directory /opt/appThings>
Options +Indexes
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
有人在我上面的httpd.conf
文件中看到任何明顯的問題會導致此問題嗎?
讓我知道是否需要其他相關信息。 我已經查看了日志,但是我不確定是否有必要/需要什么。
好吧,我不確定完全正確的答案,因為我的另一個同事是找到答案的人-我也不確定他是否也完全理解答案。
我認為我們發現的是我們擁有的mod_rewrite
模塊版本存在錯誤。 我們必須使用建議的補丁來編譯該模塊的源代碼,從而使代理正常工作。
似乎還通過防火牆對請求進行了某種“標頭剝離”。 似乎正在剝奪Connection: Upgrade
標頭,這顯然導致我們的連接失敗。
因此,盡管我沒有我想要的很多細節,但希望這可能會給其他人一些關於將來尋找什么的線索。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.