Laravel-reverb: ошибка cURL 56: получен HTTP-код 503 от прокси-сервера после ПОДКЛЮЧЕНИЯ

Я пытаюсь использовать реверберацию laravel (localhost), но работа завершается с ошибкой:

GuzzleHttp\Exception\RequestException: cURL error 56: Received HTTP code 503 from proxy after CONNECT (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://sockets.my-app/apps/154811/events?auth_key=ht3fidxq3ibryisgbwvs&auth_timestamp=1713439684&auth_version=1.0&body_md5=4d4063e1f80149f3f49cd0ca8f7b0e9b&auth_signature=09cc000f73028b8a2f0467bbdac413153847ad336247071a111c64f63aa2f289 in /var/www/may-app/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:211

мой .env

...
REVERB_HOST = "sockets.my-app"
REVERB_PORT=443
REVERB_SCHEME=https
REVERB_SERVER_HOST=0.0.0.0
REVERB_SERVER_PORT=8080
...

вот моя конфигурация NGINX:

server {
   listen 443;
   listen [::]:443;
   server_name sockets.my-app;

    ssl on;
    ssl_certificate /etc/ssl/certs/***.fr.cer;
    ssl_certificate_key /etc/ssl/private/***.fr.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1.2;
    ssl_ciphers HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA;
    ssl_prefer_server_ciphers on;

    location / {
        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;
    }
}

я отправляю свое событие в свой контроллер следующим образом:

CommentCreated::dispatch($comment);

поэтому я вижу, что задание не удалось:

2024-04-18 12:24:37 ***\***\app\Events\CommentCreated ................ RUNNING
2024-04-18 12:24:37 ***\***\app\Events\CommentCreated ............. 14.97ms FAIL

Есть ли у кого-нибудь представление о том, какой части мне не хватает? заранее спасибо

Вы можете запустить Reverb в режиме отладки, чтобы увидеть дополнительную информацию об ошибке php artisan reverb:start --debug

Maraboc 18.04.2024 14:47

да, я вижу события: «pusher:subscribe», «pusher:ping», но больше ничего

David Auvray 18.04.2024 14:49
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
2
425
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Наконец я нашел решение. Выложу сюда, если это поможет.

идея состоит в том, чтобы запустить веб-сервер и реверберацию на одной машине. Я использую обратный прокси-сервер nginx в качестве посредника между пользователем и реверберацией.

.env

REVERB_HOST = "sockets.my-domain.com"
REVERB_PORT=443
REVERB_SCHEME=https
REVERB_SERVER_HOST=127.0.0.1
REVERB_SERVER_PORT=8080
REVERB_SERVER_SCHEME=http

VITE_REVERB_SERVER_HOST='${REVERB_SERVER_HOST}'
VITE_REVERB_SERVER_PORT='${REVERB_SERVER_PORT}'
VITE_REVERB_SERVER_SCHEME='${REVERB_SERVER_SCHEME}'
VITE_REVERB_APP_KEY = "${REVERB_APP_KEY}"
VITE_REVERB_HOST = "${REVERB_HOST}"
VITE_REVERB_PORT = "${REVERB_PORT}"
VITE_REVERB_SCHEME = "${REVERB_SCHEME}"

ресурсы/js/echo.js

import Echo from 'laravel-echo';

import Pusher from 'pusher-js';
window.Pusher = Pusher;

window.Echo = new Echo({
   broadcaster: 'reverb',
   key: import.meta.env.VITE_REVERB_APP_KEY,
    wsHost: import.meta.env.VITE_REVERB_HOST,
    wsPort: import.meta.env.VITE_REVERB_PORT ?? 80,
    wssPort: import.meta.env.VITE_REVERB_PORT ?? 443,
    forceTLS: (import.meta.env.VITE_REVERB_SCHEME ?? 'https') === 'https',
    enabledTransports: ['ws', 'wss'],
});

конфигурация/трансляция

    'reverb' => [
        'driver' => 'reverb',
        'key' => env('REVERB_APP_KEY'),
        'secret' => env('REVERB_APP_SECRET'),
        'app_id' => env('REVERB_APP_ID'),
        'options' => [
            'host' => env('REVERB_SERVER_HOST'),
            'port' => env('REVERB_SERVER_PORT', 443),
            'scheme' => env('REVERB_SERVER_SCHEME', 'https'),
            'useTLS' => env('REVERB_SERVER_SCHEME', 'https') === 'https',
        ],
        'client_options' => [
            'verify' => false,
        ],

конфигурация/реверберация

 'apps' => [
        [
            'key' => env('REVERB_APP_KEY'),
            'secret' => env('REVERB_APP_SECRET'),
            'app_id' => env('REVERB_APP_ID'),
            'options' => [
                'host' => env('REVERB_SERVER_HOST'),
                'port' => env('REVERB_SERVER_PORT', 443),
                'scheme' => env('REVERB_SERVER_SCHEME', 'https'),
                'useTLS' => env('REVERB_SERVER_SCHEME', 'https') === 'https',
            ],
            'allowed_origins' => ['*'],
            'ping_interval' => env('REVERB_APP_PING_INTERVAL', 60),
            'max_message_size' => env('REVERB_APP_MAX_MESSAGE_SIZE', 10_000),
        ],

конф NGINX

server {
   listen 443;
   listen [::]:443;
  server_name sockets.my-domain.com;

ssl on;
ssl_certificate /etc/ssl/certs/****.fr.cer;
ssl_certificate_key /etc/ssl/private/****.fr.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2;
ssl_ciphers HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA;
ssl_prefer_server_ciphers on;

location / {
    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 X-Forwarded-Proto https;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_pass http://0.0.0.0:8080;
    }
}

это работает очень хорошо

Другие вопросы по теме