我有几乎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