嗨,我目前正在尝试找到一种方法来切换 URL 的协议。我有一个服务器,它本身运行良好,但在 apache 反向代理后面,它抛出了错误“与 websocket 的连接失败”。问题是 Websocket 只能通过服务器的 ip 在本地以 wss:// 的形式使用,它会切换到 https://。有没有办法将它切换回 apache 反向代理?
答案1
你不想转变协议。WSS 和 https 是两种不同的协议 - 原因如下。如果您的应用需要 wss,则也需要 wss。
你想要的是配置 Apache 来代理 https和wss 为您准备。可以使用 来完成mod_rewrite
。将以下内容添加到您的 vhost 节中:
ProxyRequests Off
RewriteEngine On
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /(.*) wss://localhost:8123/$1 [P,L]