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

Rocky Linux生产服务器上Laravel Reverb的wss://协议无法正常工作

Laravel Reverb wss连接失败排查与解决

可能成因

  • 证书配置错误:证书路径无效、证书与域名不匹配、证书文件权限不足
  • 端口/防火墙限制:Rocky Linux本地防火墙或云安全组未放行443端口
  • Reverb服务未正常运行:未启动Reverb进程,或进程意外退出
  • 反向代理配置缺失:未通过Nginx/Apache正确转发WebSocket请求
  • 配置文件不一致:.env与config/reverb.php中的参数不匹配

排查步骤

  1. 检查Reverb服务状态
    执行命令查看进程是否存在:

    ps aux | grep reverb
    

    或者直接尝试重启服务:

    php artisan reverb:stop && php artisan reverb:start
    

    若要后台运行,可配合nohup或进程管理器(如Supervisor):

    nohup php artisan reverb:start > /dev/null 2>&1 &
    
  2. 验证端口与防火墙
    检查443端口是否被监听:

    netstat -tulpn | grep 443
    

    检查Rocky Linux的firewalld是否放行443:

    firewall-cmd --list-all | grep 443
    

    若未放行,添加规则并重启防火墙:

    firewall-cmd --add-port=443/tcp --permanent
    firewall-cmd --reload
    

    同时确认云服务器的安全组规则已允许443端口的TCP流量。

  3. 检查证书配置

    • 确保config/reverb.php中的local_cert和local_pk使用绝对路径,比如/etc/nginx/ssl/cert.pem,而非相对路径
    • 验证证书与域名是否匹配:执行命令查看证书绑定域名:
      openssl x509 -in /path/to/cert.pem -text -noout | grep DNS
      
      确认结果包含你的REVERB_HOST域名
    • 检查证书文件权限,确保Reverb进程(通常是www-data或nginx用户)能读取:
      chmod 644 /path/to/cert.pem /path/to/private.key
      chown www-data:www-data /path/to/cert.pem /path/to/private.key
      
  4. 核对配置文件一致性
    检查config/reverb.php是否正确读取.env参数,确保host、port、scheme字段指向对应变量,同时tls配置块正确嵌套在options内:

    'options' => [
        'tls' => [
            'local_cert' => env('REVERB_TLS_CERT', '/path/to/default/cert.pem'),
            'local_pk' => env('REVERB_TLS_KEY', '/path/to/default/private.key'),
        ],
    ],
    

    建议在.env中新增证书路径的变量,避免硬编码配置文件。

  5. 检查反向代理配置(若使用Nginx/Apache)
    若Reverb未直接监听443(比如默认监听8080),需通过Nginx转发wss请求,配置示例:

    server {
        listen 443 ssl;
        server_name your-domain.com;
    
        ssl_certificate /path/to/cert.pem;
        ssl_certificate_key /path/to/private.key;
    
        location /reverb {
            proxy_pass http://127.0.0.1:8080;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    

    此时.env中需调整为:

    REVERB_HOST=127.0.0.1
    REVERB_PORT=8080
    REVERB_SCHEME=http
    

    客户端连接地址为wss://your-domain.com/reverb

额外验证

客户端连接失败时,可查看Reverb日志(默认存储在storage/logs/reverb.log)或服务器的系统日志(/var/log/messages或/var/log/syslog),获取更具体的错误信息,比如证书验证失败、端口占用等。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 10:41:12