You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LiteSpeed多端口WebSocket代理配置问题求助

多端口WebSocket代理的正确配置方案

你的配置存在几个关键问题:

  1. 重复的ProxyPass /会导致规则冲突,LiteSpeed只会生效最后一条,前两条完全无效;
  2. RewriteRule中使用http://协议不匹配WebSocket,应该用ws://(加密场景用wss://);
  3. 正则规则^websocket$仅匹配精确的/websocket路径,无法覆盖带子路径的请求。

以下是两种可行的正确配置方式:

方式一:使用RewriteRule(灵活适配路径)

这种方式适合需要处理复杂路径匹配的场景,规则会自动传递子路径到后端服务:

<IfModule mod_rewrite.c>
RewriteEngine On

# 映射 /websocket 路径到8080端口的WebSocket服务
RewriteRule ^websocket(/.*)?$ ws://sample:8080$1 [P,L]

# 映射 /second 路径到8081端口的WebSocket服务
RewriteRule ^second(/.*)?$ ws://sample:8081$1 [P,L]

# 映射 /third 路径到8082端口的WebSocket服务
RewriteRule ^third(/.*)?$ ws://sample:8082$1 [P,L]
</IfModule>
  • (/.*)?:匹配路径后的任意子部分,$1将这部分传递给后端,保证请求路径完整;
  • [P]:触发LiteSpeed的代理机制;
  • [L]:匹配当前规则后停止后续规则处理,避免冲突。

方式二:使用ProxyPass(直观清晰)

如果路径规则简单,直接用ProxyPass更易维护,记得搭配ProxyPassReverse处理响应头:

# 代理 /websocket 到8080端口
ProxyPass /websocket ws://sample:8080/websocket
ProxyPassReverse /websocket ws://sample:8080/websocket

# 代理 /second 到8081端口
ProxyPass /second ws://sample:8081/second
ProxyPassReverse /second ws://sample:8081/second

# 代理 /third 到8082端口
ProxyPass /third ws://sample:8082/third
ProxyPassReverse /third ws://sample:8082/third
  • ProxyPassReverse用于修正后端服务返回的响应头,确保重定向、Cookie等信息正确对应前端路径。

额外注意事项

  • 确认LiteSpeed已开启WebSocket支持(在服务器全局配置或虚拟主机配置中启用WebSockets选项);
  • 服务器防火墙需允许LiteSpeed访问后端的8080、8081、8082端口;
  • 若使用HTTPS对外提供服务,将配置中的ws://替换为wss://,LiteSpeed会自动处理SSL终止,后端仍可使用ws://通信。

内容的提问来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:10:16