我正在尝试将端口443上的WSS请求转发给侦听服务。我已经几乎通过Apache的mod_proxy
模块获得了一个有效的转发器/代理。
websocket客户端(在浏览器中)握手,并通过转发端口连接。但是客户端没有收到任何数据。它似乎正在以一种方式工作,但不会将响应/数据返回到正确的位置。
似乎是路由问题。以下是我的httpd.conf
设置:
<VirtualHost *:443>
ServerAdmin webmaster@dummy-host.example.com
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
如果有人能指出我正确的方向(即使只是调试 发送回复的地方)我会很感激!我可以看到错误日志中没有任何内容 - 只是没有数据返回浏览器。
编辑:
因此,放弃SSL而仅支持普通ws:
协议可以解决问题 - 但显然它不使用wss
。我还在调查为什么wss:
没有发回任何数据。