apache代理wss需启用mod_proxy_wstunnel模块,用wss://前缀配置proxypass透传upgrade/connection头,并在ssl虚拟主机中终结tls、设置超时与证书。
apache 要代理转发 wss(websocket secure),核心不是“加密本身”,而是正确终结 tls 并建立 websocket 隧道。wss 连接必须由 apache 先完成 https 握手,再将 upgrade 请求透传给后端 ws:// 服务——整个过程依赖三个关键动作:启用专用模块、使用 wss:// 前缀代理、透传协议升级头。
必须启用 mod_proxy_wstunnel 模块
这是唯一能识别 Upgrade: websocket 并切换为隧道模式的模块。仅靠 mod_proxy 和 mod_proxy_http 会把 WSS 握手当普通 HTTP 处理,导致连接建立后立即断开(常见错误码 1006)。
- 检查是否已加载:
httpd -M | grep proxy_wstunnel(Linux/macOS)或httpd -M | findstr wstunnel(Windows),应看到proxy_wstunnel_module (shared) - 若未启用,在
httpd.conf中取消以下三行注释(路径可能因安装方式略有不同):LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_http_module modules/mod_proxy_http.soLoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so - 保存后重启 Apache:
sudo systemctl restart apache2(Debian/Ubuntu)或sudo apachectl restart(macOS/源码安装)
ProxyPass 必须用 wss:// 前缀,并匹配后端地址
Apache 只有在 ProxyPass 目标以 wss:// 开头时,才会调用 mod_proxy_wstunnel 启动隧道。写成 https:// 或 http:// 都无效。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 典型配置(前端访问
wss://example.com/ws/,后端是本地 ws 服务):ProxyPass /ws/ wss://127.0.0.1:8080/ws/ProxyPassReverse /ws/ wss://127.0.0.1:8080/ws/ - 路径末尾斜杠必须严格一致:前后都带
/,否则浏览器收到的Sec-WebSocket-Location会被重写错误,直接拒绝连接 - 如果后端本身也支持 HTTPS+WebSocket(如自签名 wss://),且 Apache 不终结 TLS,需额外启用
SSLProxyEngine on并配置证书信任链
强制透传 Upgrade 和 Connection 头,并延长超时
WebSocket 握手依赖这两个 hop-by-hop 头,Apache 默认可能过滤或改写它们;同时默认 60 秒超时会主动关闭空闲长连接。
- 在同一个
<virtualhost></virtualhost>块中添加:RequestHeader set Connection "upgrade"RequestHeader set Upgrade "websocket"ProxyPreserveHost On - 确保
mod_headers已启用(httpd -M | grep headers) - 同步设置超时参数(建议 3600 秒):
Timeout 3600ProxyTimeout 3600 - 禁用可能干扰的模块,例如
mod_deflate(WebSocket 帧不压缩)或mod_security(可能拦截 Upgrade 头)
SSL 配置需完整且安全
WSS 要求 Apache 自己终结 TLS,因此虚拟主机必须启用 SSL 并配置有效证书。
- 启用 SSL 引擎与协议:
SSLEngine onSSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 - 指定证书路径(以实际路径为准):
SSLCertificateFile /path/to/fullchain.pemSSLCertificateKeyFile /path/to/privkey.pem - 推荐启用 OCSP Stapling 和会话缓存提升性能与安全性










