laravel Reverb端口配置区别

发布时间:2025-03-21 06:14

在 Reverb 这个 WebSocket 服务器的配置中,涉及 两个不同的端口配置,分别是 REVERB_SERVER_PORTREVERB_PORT,它们的作用不同:

1. REVERB_SERVER_PORT(服务端监听端口)

  • 这个端口决定 Reverb 服务器本身运行在哪个端口,即 Laravel 内置的 WebSocket 服务器监听的端口。
  • 默认是 8080,即 0.0.0.0:8080,允许所有网络接口访问。
  • 你可以通过 .env 文件或者 php artisan reverb:start --port=9000 来修改它,例如:
    REVERB_SERVER_HOST=0.0.0.0
    REVERB_SERVER_PORT=9000

这样,Reverb 服务器就会监听 `0.0.0.0:9000`。

2. REVERB_PORT(应用程序连接的端口)

  • 这个端口是 Laravel 应用 用于广播 WebSocket 消息时连接的端口
  • 通常,它指向一个 对外暴露的 WebSocket 地址,可能是负载均衡器或代理服务器。
  • 例如,在生产环境中:
    REVERB_HOST=ws.laravel.com
    REVERB_PORT=443

这表示 Laravel 应用会连接 `wss://ws.laravel.com:443`,而 `443` 是标准的 HTTPS WebSocket 端口。

3. 总结两者的区别

配置项 作用 默认值 可能的修改方式
REVERB_SERVER_PORT Reverb 服务器监听的端口 8080 通过 .envphp artisan reverb:start --port=9000
REVERB_PORT Laravel 连接 WebSocket 服务器的端口 由 Laravel 应用使用,通常是 443(生产环境)或 8080(开发环境)

4. 示例场景

  • 本地开发
    • 你可以直接运行:
    php artisan reverb:start

这样,Reverb 服务器会监听 `0.0.0.0:8080`,Laravel 也会连接 `ws://localhost:8080`。
  • 生产环境
    • 你的 Reverb 服务器可能运行在 8080 端口,但通过 Nginx 代理 提供 wss://ws.laravel.com:443
    REVERB_SERVER_HOST=0.0.0.0
    REVERB_SERVER_PORT=8080
    REVERB_HOST=ws.laravel.com
    REVERB_PORT=443
  • Nginx 代理示例:
    server {
        listen 443 ssl;
        server_name ws.laravel.com;

        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
        }
    }
  • 这样,外部用户访问 wss://ws.laravel.com:443,而 Reverb 服务器实际运行在 127.0.0.1:8080

简单来说:

  • REVERB_SERVER_PORT 负责 Reverb 服务器监听在哪个端口
  • REVERB_PORT 负责 Laravel 连接哪个 WebSocket 端口,可能是代理服务器或负载均衡器的端口。