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

OpenLiteSpeed部署Laravel Reverb遇Cookie限制致WebSocket连接失败

Laravel Reverb + OpenLiteSpeed Cookie大小导致WebSocket连接失败问题解决

问题背景

部署环境:OpenLiteSpeed v1.8.3 + Laravel v12 + Vue v3.5 + LSPHP 8.4,使用Laravel Reverb + Echo实现实时通知。本地测试正常,但线上出现以下问题:

  • 未登录时Reverb与Echo可正常建立WebSocket连接、订阅监听;
  • 用户登录后新增刷新Token Cookie,总Cookie大小超过1452字节,刷新页面后连接失败:
    • Chromium系浏览器报错:WebSocket握手错误:意外响应码200
    • Epiphany(类Safari)连接建立后立即关闭
    • Firefox因自动截断Cookie请求头未受影响
  • 已配置OLS官方反向代理、WebSocket Proxy,且用Supervisor维持Reverb进程,问题仍存在。

核心原因

WebSocket握手阶段的HTTP请求头(包含Cookie)受TCP MSS限制,当总大小超过1452字节时,OLS或Reverb无法正常处理请求,导致握手失败。

解决方案

1. 调整OpenLiteSpeed请求头大小限制

OLS默认对请求头大小有严格限制,可通过管理面板修改:

  • 进入OLS管理面板,依次选择Server Configuration > Tuning
  • 将Max Request Header Size从默认值(通常1024或2048)修改为4096
  • 同步检查Max Request Body Size,确保不会限制请求体
  • 保存配置后重启OLS服务

2. 剥离WebSocket请求的Cookie头(推荐)

Reverb的WebSocket连接无需携带所有Cookie(如刷新Token),可通过OLS重写规则移除无关Cookie:

  • 进入对应虚拟主机的Rewrite设置页面
  • 添加以下重写规则(假设Reverb的WebSocket路径为/ws):
RewriteCond %{REQUEST_URI} ^/ws [NC]
RewriteRule ^(.*)$ http://127.0.0.1:8080/$1 [P,L,E=NO_COOKIE:1]
  • 打开Reverb对应的External App配置,在Environment字段添加NO_COOKIE=1,并在代理时清除Cookie头:
    若OLS启用了Header模块,可直接在重写规则后追加Header unset Cookie

3. 优化客户端Cookie大小

  • 缩短刷新Token长度,或改用更紧凑的Token格式(如精简JWT的Payload内容)
  • 将非必要Cookie设置为HttpOnly,并限制其生效路径,避免WebSocket请求携带无关Cookie
  • 考虑将部分状态迁移至服务器端存储,减少客户端Cookie负载

4. 调整Reverb配置

  • 编辑config/reverb.php,增大请求大小限制:
'options' => [
    'max_request_size' => 4096, // 调整为足够容纳大请求头的数值
    'headers' => [
        'Access-Control-Allow-Origin' => env('APP_URL'),
    ],
],
  • 确认.env中REVERB_PORT与OLS代理配置的后端端口一致,Reverb监听地址设为127.0.0.1(仅本地代理使用)

5. 验证WebSocket Proxy配置

确保OLS的WebSocket代理设置正确:

  • 进入虚拟主机的WebSocket Proxy页面,启用Enable WebSocket Proxy
  • 设置Backend Host为127.0.0.1,Backend Port为Reverb监听端口(默认8080)
  • 设置URI为/ws(匹配Reverb默认WebSocket路径)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:57:33