Apache 上的 Websocket 代理已连接,但未向客户端返回数据

Apache 上的 Websocket 代理已连接,但未向客户端返回数据

我有几乎mod_proxy获得一个有效的 websocket,通过 Apache 的模块与 WSS 和 HTTPS 请求共享端口 443 。

Websocket 客户端(在浏览器中)握手并建立连接。但随后客户端没有收到任何数据返回

这似乎是路由问题。以下是我的httpd.conf设置:

<VirtualHost *:443>
    ServerAdmin [email protected]
    DocumentRoot /var/www/prod/domain
    ServerName domain.com
    ErrorLog logs/prod-error_log
    CustomLog logs/prod-access_log common

    SSLEngine On

    SSLCertificateFile  /etc/letsencrypt/live/domain.com/cert.pem
    SSLCertificateKeyFile  /etc/letsencrypt/live/domain.com/privkey.pem
    SSLCertificateChainFile  /etc/letsencrypt/live/domain.com/fullchain.pem

    SSLProxyEngine On
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyVia On

    ProxyPass /radio wss://172.31.47.171:8082/
    ProxyPassReverse /radio wss://172.31.47.171:8082/

    ErrorDocument 403 '<h1>Unauthorized Access</h1>'
</VirtualHost>

客户端使用以下命令进行连接:

var host = 'wss://domain.com/radio/';
socket = new WebSocket(host);

最后,套接字处理过程连接到:

172.31.47.171:8082

在阅读了所有我能读到的内容后,我觉得这可能是一个问题ProxyPass-ProxyPassReverse但我已经尝试了目前我能想到的一切方法。

当浏览器与端口监听脚本握手时,端口监听脚本会显示成功的“客户端已连接”消息,但随后挂起的请求就会永远挂起 - 没有数据返回。

环境设置:

Server version: Apache/2.4.18 (Amazon)
Amazon Linux EC2

相关内容