如何在IIS服务器上配置Laravel Reverb使其正常运行?
IIS服务器配置Laravel Reverb的解决方案
以下是针对IIS服务器部署Laravel Reverb的具体配置方案,解决WebSocket无法正常工作的问题:
1. 调整Reverb监听地址与前后端配置
本地环境的localhost配置在服务器部署时无法被外部访问,需修改为服务器可被访问的地址:
后端.env配置修改
REVERB_APP_ID={*****} REVERB_APP_KEY={*****} REVERB_APP_SECRET={*****} REVERB_HOST="0.0.0.0" # 监听所有网络接口,或填写服务器公网IP/域名 REVERB_PORT=8080 REVERB_SCHEME=http # 若用HTTPS则改为https
前端.env配置修改
VITE_REVERB_APP_ID={*****} VITE_REVERB_APP_KEY={*****} VITE_REVERB_HOST="your-server-domain.com" # 服务器公网IP或域名,不能用localhost VITE_REVERB_PORT=80 # 若通过IIS反向代理,使用IIS站点端口(80/443) VITE_REVERB_SCHEME=http # 对应IIS站点的协议
2. 配置IIS反向代理(URL重写)
需先安装IIS的URL重写模块和应用程序请求路由(ARR)模块,然后添加WebSocket转发规则:
- 打开IIS管理器,进入目标站点,点击「URL重写」
- 添加空白规则,命名为
Reverb WebSocket Proxy - 匹配URL:选择「正则表达式」,模式填写
^apps/.*(对应Reverb默认的请求路径前缀) - 条件:添加两个条件
- 条件输入:
{HTTP_CONNECTION},模式:Upgrade - 条件输入:
{HTTP_UPGRADE},模式:websocket
- 条件输入:
- 操作:选择「反向代理」,服务器名称填写
localhost,端口填写8080,勾选「启用WebSocket代理」
3. 确认IIS站点WebSocket设置
- 进入站点的「WebSocket」功能,确保「允许WebSocket」处于启用状态
- 检查站点的应用程序池,将.NET CLR版本设置为无托管代码(Laravel为PHP项目,无需.NET托管)
4. 服务器防火墙与端口配置
- 若直接让前端访问Reverb的8080端口,需在Windows防火墙中添加入站规则,允许TCP协议的8080端口
- 推荐使用反向代理方式,通过IIS的80/443端口转发请求,避免开放额外端口
5. 将Reverb注册为Windows服务(生产环境必备)
避免手动启动Reverb,用NSSM工具将其注册为后台服务:
- 下载NSSM工具并解压到服务器
- 打开命令提示符,执行:
nssm install LaravelReverb
- 在弹出的配置窗口中:
- 「Path」填写PHP可执行文件路径(如
C:\PHP\php.exe) - 「Arguments」填写
artisan reverb:start - 「Working Directory」填写Laravel项目根目录
- 「Path」填写PHP可执行文件路径(如
- 设置服务启动类型为「自动」,启动服务即可
6. 调试排查
- 运行
php artisan reverb:start -v查看Reverb的实时日志,排查连接错误 - 查看IIS站点日志(默认路径
C:\inetpub\logs\LogFiles),检查WebSocket请求的错误码(如403、502) - 前端控制台查看WebSocket连接报错,根据提示调整配置
内容的提问来源于stack exchange,提问作者Alexby
相关产品推荐
相关产品推荐

