node.js - 通过 SSL 在子域上服务 Nodejs Socketio:WebSocket 握手期间出错:意外的响应代码:302
问题描述
<VirtualHost ip:443>
ServerAdmin webmaster@localhost
ServerName webrtc.example.com
ServerAlias webrtc.example.com
DocumentRoot /var/www/webrtc.example.com
SSLEngine on
SSLProxyEngine on
SSLCertificateFile /etc/letsencrypt/live/webrtc.example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/webrtc.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/webrtc.example.com/chain.pem
ProxyRequests Off
ProxyPreserveHost Off
ProxyPass / https://web.example.com:8544/
ProxyPassReverse / https://example.com:8544 /
</VirtualHost>
我想为在子域的 8544 端口上运行的 socket.io 提供服务。所以我像上面一样在 apache 中更新了我的 000-default.conf 文件。
在我重新启动 apache 服务器后,https://webrtc.example.com/socket.io/socket.io.js
工作正常。但在网页中它返回一个错误:
失败:WebSocket 握手期间出错:意外响应代码:400
为了解决这个错误,我在上面添加了这段代码ProxyRequests
;
RewriteEngine On
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://web.example.com:8544/$1[P,L]
并且错误更改为 HTTP 302 错误。我应该怎么做才能解决这个问题?
解决方案
推荐阅读
- python - Matplotlib 直方图,其中 bin 定义了 FLOATS 的范围并由它着色?
- azure-active-directory - 无法访问 AAD Microsoft App 的访问代码和刷新令牌
- java - 游戏面板实例的 MouseListener
- javascript - jQuery 时间提醒
- pydev - Pydev 代码模板中的变量替换
- c# - 无法加载文件或程序集“Microsoft.Management.Infrastructure
- xcode - SwiftUI 中的绑定无法在循环内工作
- apache-kafka-connect - Confluent HttpSinkConnector 给出的错误是复制因子为 3,当它在任何地方都被称为 1 时
- javascript - jQuery 中继器 + 附加在选择和刷新上
- java - DatepickerDialog 不在 Textview 中添加日期