我正在尝试通过HTTPS连接到不是WSS的websocket服务器。为此,我正在尝试使用 apache 配置将 WSS 代理到 WS。
我尝试使用ProxyPass,但我只能访问.htaccess文件。所以我也尝试使用带有 [P] 标志的mod_rewrite,但仍然没有运气。
这是我的.htaccess文件现在的样子:
RewriteEngine On
RewriteCond %{HTTP:UPGRADE} ^WebSocket$
RewriteCond %{HTTP:CONNECTION} Upgrade$
RewriteRule /(.*) ws://127.0.0.1:9002/ [P]
但是它似乎没有代理,因为我仍然从 wss 连接收到连接错误。
您的RewriteCond
Upgrade: WebSocket
区分大小写,但(例如(Chrome 会发送Upgrade: websocket
.尝试使用不区分大小写的规则:
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:9002/$1 [P,L]
另请参阅此处:https://stackoverflow.com/a/29823699/200445