目前正在更改LARLAVEL/LARAVEL-WebSockets以用于LARAVEL/RIREB

混响和LARLAVEL ECHO成功在本地运行,不使用SSL

我使用了一个简单的chirper laravel应用程序: https://github.com/jbarreraballestas/laravel-chirper-react-realtime/tree/laravel-reverb

config/reverb.php

'servers' => [

        'reverb' => [
            'host' => env('REVERB_SERVER_HOST', '0.0.0.0'),
            'port' => env('REVERB_SERVER_PORT', 8080),
            'hostname' => env('REVERB_HOST'),
            'options' => [
                'tls' => [
                        'local_cert'=>'/chirper_cert/cert1.pem' // certbot certificate with 777 permissions while check if success but not work
                ],
            ],
            'scaling' => [
                'enabled' => env('REVERB_SCALING_ENABLED', false),
                'channel' => env('REVERB_SCALING_CHANNEL', 'reverb'),
            ],
            'pulse_ingest_interval' => env('REVERB_PULSE_INGEST_INTERVAL', 15),
        ],

    ],

try 使用代理通行证

server {

        root /var/www/laravel-chirper-react-realtime/public;
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-Content-Type-Options "nosniff";
        index index.php;
        charset utf-8;
        server_name example.com;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

        location = /favicon.ico { access_log off; log_not_found off; }
        location = /robots.txt  { access_log off; log_not_found off; }
        error_page 404 /index.php;

        location ~ \.php$ {
                fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
                include fastcgi_params;
        }
# Added this for Web Sockets Proxy
    location /ws/ {
     proxy_pass             http://127.0.0.1:8080;
     proxy_set_header Host  $host;
     proxy_read_timeout     60;
     proxy_connect_timeout  60;
     proxy_redirect         off;

    # Allow the use of websockets
     proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection 'upgrade';
     proxy_set_header Host $host;
     proxy_cache_bypass $http_upgrade;
    }

    listen [::]:443 ssl; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

错误:

WebSocket connection to 'wss://example:8080/app/fl2qodkdxamxyygnpbur?protocol=7&client=js&version=8.4.0-rc2&flash=false' failed

推荐答案

如果您使用的是laravel/reverb:@beta,则更改为dev-main

composer require laravel/reverb:dev-main

nginx listen on 443:

server{
...
location /app {
    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_read_timeout 300s;
    proxy_connect_timeout 75s;
    proxy_pass http://127.0.0.1:8080;
}
...
}

laravel .env

REVERB_HOST="example.com"
REVERB_PORT=443
REVERB_SCHEME=https

当软件包获得稳定版本时,请更改为该版本.

希望这对你有帮助.

Laravel相关问答推荐

如何判断用户是否已登录Laravel

单个对象的Eloquent 计数是错误的

Laravel:子文件夹中的 lang 文件

为什么 laravel 模型会重复一组数据以及如何(如果可能)只有一组数据?

Laravel 不验证是否不需要字段

磁盘 [视频] 没有配置的驱动程序

合并两个 Eloquent 集合并删除所有重复项.

Laravel Input:all() 忽略禁用的输入

如何在 Laravel 中实现自己的 Faker 提供程序

如何更改 ember-cli 中的 dist 文件夹路径?

在 Laravel 容器中覆盖单例

Laravel 说 Auth guard [] 没有定义

扩展模型 == 扩展 Eloquent?

Laravel 迁移命名约定

在 Laravel 5 控制器中找不到类App\Http\Controllers\DB

如何在特定项目中禁用初始化 JS/TS 语言功能?

如何在没有日志(log)、没有信息的情况下调试 Laravel 错误 500

为什么 phpunit 没有得到 phpunit.xml 中指定的正确 APP_ENV?

如何在 Laravel 5.3 中获取当前的语言环境

Laravel:Redis 无法建立连接:[tcp://127.0.0.1:6379]