Laravel Reverb本地WebSocket SSL连接问题解决方案
Laravel 11.9 + Reverb 1.0 HTTPS自签名证书问题解决方案
针对Laravel Reverb搭配HTTPS和自签名证书时出现的连接错误,以下是经过验证的解决步骤:
更新.env文件
确保Reverb使用HTTPS协议,并配置证书文件路径:REVERB_SCHEME=https SSL_CERTIFICATE=path/to/file.crt SSL_CERTIFICATE_KEY=path/to/file.key配置Nginx
使用@wslocation避免与现有路由冲突,转发Reverb请求:# 转发请求到Reverb(广播服务) location @ws { proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header Scheme $scheme; proxy_set_header SERVER_PORT $server_port; proxy_set_header REMOTE_ADDR $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_pass http://0.0.0.0:8080; }修改config/reverb.php
指定本地证书和密钥,本地环境禁用证书校验:'options' => [ 'tls' => [ 'local_cert' => env('SSL_CERTIFICATE'), 'local_pk' => env('SSL_CERTIFICATE_KEY'), 'verify_peer' => env('APP_ENV') !== 'local', ], ],修改config/broadcasting.php
配置Guzzle客户端,本地环境关闭证书验证:'client_options' => [ 'verify' => env('APP_ENV') !== 'local', ],暴露8080端口
若使用Docker,需确保8080端口已对外公开。
以上配置可解决Laravel Reverb搭配HTTPS自签名证书时的各类连接问题。
问题排查过程
- 初始Nginx配置冲突:Laravel文档默认的
location /已被占用,改用@ws后解决; - 端口未暴露:Docker环境下未开放8080端口导致无法访问;
- HTTPS证书校验失败:HTTP下WebSocket正常,但HTTPS连接失败,通过日志定位到
verify_peer配置错误,调整后修复。
内容的提问来源于stack exchange,提问作者Francis Pocket Lacerte
相关产品推荐
相关产品推荐

