Apache反向代理OpenAI Whisper WebUI时HTTPS上传音频无响应问题求助
解决Apache反向代理Whisper WebUI后音频转录无响应问题
问题根源
Gradio(Whisper WebUI基于此框架)依赖WebSocket实现异步任务通信(如音频上传后的转录进度反馈、结果返回),你的默认Apache配置未处理WebSocket请求转发,导致上传后请求卡住。
解决步骤
1. 启用Apache必需模块
首先启用处理WebSocket的proxy_wstunnel模块:
a2enmod proxy_wstunnel systemctl restart apache2
2. 修改Apache虚拟主机配置
更新*:443段的配置,添加WebSocket转发规则和正确的请求头:
<VirtualHost *:80> ServerName whisper.mydomain.com Redirect / https://whisper.mydomain.com/ </VirtualHost> <VirtualHost *:443> ServerName whisper.mydomain.com # 转发WebSocket请求(适配Gradio的异步通信路径) ProxyPass /queue/join ws://localhost:7860/queue/join ProxyPassReverse /queue/join ws://localhost:7860/queue/join # 转发普通HTTP请求 ProxyPass / http://localhost:7860/ ProxyPassReverse / http://localhost:7860/ # 告知后端请求来自HTTPS协议 RequestHeader set X-Forwarded-Proto "https" RequestHeader set X-Forwarded-Port "443" SSLEngine on SSLCertificateFile "/etc/ssl/certs/AlphaSSL__.mydomain.com.pem" SSLCertificateKeyFile "/etc/ssl/private/AlphaSSL__.mydomain.com.key" </VirtualHost>
3. 重启Apache服务
systemctl restart apache2
补充说明
proxy_wstunnel模块是Apache支持WebSocket转发的核心,必须启用。- 添加
/queue/join路径的WebSocket转发:Gradio的异步任务通过此路径建立WebSocket连接,缺少则无法接收转录结果。 X-Forwarded-Proto和X-Forwarded-Port确保后端生成与外部访问一致的HTTPS链接,避免协议不匹配导致的通信失败。
如果仍有问题,可以尝试更通用的WebSocket路径匹配(覆盖Gradio所有可能的WebSocket端点):
ProxyMatch ^/(queue|websocket)/ ws://localhost:7860$0 ProxyPassReverse ^/(queue|websocket)/ ws://localhost:7860$0
内容的提问来源于stack exchange,提问作者Luis Manuel Cortés Tirado
相关产品推荐
相关产品推荐

